使用 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)解决了问题。
我在域模式下使用 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)解决了问题。