使用 jboss cli 进行域模式部署无法选择模块

deployment using jboss cli for domain mode fails to pick modules

我在域模式下使用 JBoss EAP 7.1。

我已经在 eap_home/modules 文件夹中设置了我的静态模块:

com
|- organization
  |- global
    |- main (this has module.xml)

我有一个要部署的 myservice.ear

独立模式:

ear 放入 standalone/deployment/ 并使用 ./standalone.sh 启动服务器:工作正常。

域模式:

使用 jboss-cli 部署:失败

deploy /<PATH>/myservice.ear --name=myservice --runtime-name=myservice.ear --server-groups=main-server-group

我收到以下错误消息:

[.... /] deploy /<PATH>/myservice.ear --name=myservice --runtime-name=myservice.ear --server-groups=main-server-group
{"WFLYDC0074: Operation failed or was rolled back on all servers. Server failures:" => {"server-group" => {"main-server-group" => {"host" => {"slave1" => {"server-one" => {"WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-1" => {"WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"WFLYCTL0080: Failed services" => {"jboss.module.service.\"deployment.services.ear.service-one-SNAPSHOT.war\".main" => "WFLYSRV0179: Failed to load module: deployment.services.ear.service-one-SNAPSHOT.war
    Caused by: org.jboss.modules.ModuleNotFoundException: com.organization.global",.......<few more statements with the same exception> ....

知道可能是什么原因吗?

注意:我稍微修改了文件名和消息以隐藏组织的具体细节。如果您需要任何说明,请告诉我。

额外信息:

EAR/META-INF/jboss-deployment-structure.xml 文件:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <deployment>
     <dependencies>
         <module name="com.organization.global" export="true"/>
     </dependencies>
  </deployment>
</jboss-deployment-structure>

我在 EAR 中有几个 WAR 文件,每个 WAR 文件都包含它们自己的 WAR/WEB-INF/jboss-deployment-structure.xml 版本并包含以下内容:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
     <dependencies>
        <module name="com.organization.global"/>
     </dependencies>
  </deployment>
</jboss-deployment-structure>

EAR 的 xml 位于 META-INF 内,但 WARs 位于 WEB-INF 下。

只会读取您 EAR 中的 jboss-deployment-structure.xml。如果子部署需要额外的模块依赖项,您需要将该配置添加到 EAR 的描述符中。

您应该从 WAR 中删除 jboss-deployment-structure.xml 并将 EAR 中的那个更改为如下所示。

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <deployment>
     <dependencies>
         <module name="com.organization.global" export="true"/>
     </dependencies>
  </deployment>
  <sub-deployment name="service-one-SNAPSHOT.war">
     <dependencies>
         <module name="com.organization.global" export="true"/>
     </dependencies>
  </sub-deployment>
</jboss-deployment-structure>

至于为什么它似乎部署到独立服务器,那应该行不通。部署的处理方式完全相同。如果它正常工作,我会说它可能是某个地方的错误。

我在 EAP_MASTER_HOME/modules/ 下设置了静态模块 com/organization/global。 在 独立模式 中的部署尝试仅将其部署到 master 上的服务器 运行,因此部署工作正常。 当我尝试在域模式下部署 EAR 时,slave-eap 上的服务器 运行 正在寻找 EAP_SLAVE_HOME/modules/.

下的模块

EAP_SLAVE_HOME/modules/ 下添加静态模块(或符号 link)解决了问题。