развертывание с использованием jboss cli для режима домена не может выбрать модули

Я использую JBoss EAP 7.1 в режиме домена.

Я установил свои статические модули в папку eap_home/modules:

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

У меня есть myservice.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>

У меня есть несколько файлов WAR внутри EAR, и каждый из этих файлов 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>

XML для EAR находится внутри META-INF, но для WAR он находится в WEB-INF.


person Rupesh    schedule 13.04.2018    source источник
comment
У вашего EAR есть jboss-deployment-structure.xml? Модули должны работать одинаково как для домена, так и для автономного сервера.   -  person James R. Perkins    schedule 15.04.2018
comment
@JamesR.Perkins Да, EAR содержит файл jboss-deployment-structure.xml со следующим определением модуля: <module name="com.organization.global" export="true" /> Я даже пытался добавить annotations=true в тег определения модуля, как было предложено на одном из форумов, но безуспешно.   -  person Rupesh    schedule 15.04.2018
comment
Можете ли вы поделиться содержимым jboss-deployment-structure.xml? У вас есть зависимость модуля как от EAR, так и от WAR?   -  person James R. Perkins    schedule 16.04.2018
comment
@JamesR.Perkins добавил содержимое jboss-deployment-structure.xml как для EAR, так и для WAR в конце тела вопроса. EAR содержит несколько файлов WAR, и все они зависят от модуля.   -  person Rupesh    schedule 16.04.2018


Ответы (2)


Только jboss-deployment-structure.xml из вашего EAR будет прочитан. Если для подразвертываний требуется дополнительная зависимость модуля, вам необходимо добавить эту конфигурацию в дескриптор EAR.

Вы должны удалить jboss-deployment-structure.xml из своего WAR и изменить один в 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>

Что касается того, почему кажется, что он развертывается на автономном сервере, это не должно работать. Развертывания обрабатываются точно так же. Если это работает, я бы сказал, что это, вероятно, ошибка где-то.

person James R. Perkins    schedule 16.04.2018
comment
Спасибо за помощь, Джеймс... но проблема заключалась в том, что модули не копировались в ведомый EAP. У меня была установлена ​​папка статических модулей только в моем основном EAP, и поэтому она работала в автономном режиме. - person Rupesh; 16.04.2018

Я установил статические модули com/organization/global под EAP_MASTER_HOME/modules/. Развертывание в автономном режиме пытается развернуть его только на сервере, работающем на главном сервере, поэтому развертывание работает нормально. Когда я попытался развернуть EAR в режиме домена, сервер, работающий на slave-eap, искал модули под EAP_SLAVE_HOME/modules/.

Добавление статических модулей (или символической ссылки) под EAP_SLAVE_HOME/modules/ решило проблему.

person Rupesh    schedule 16.04.2018