JBoss AS 7: как сделать независимое развертывание EJB и зависимой WAR?

У меня есть приложение с одним EJB (mwf_ejb.jar) и WAR (mwf_web.war). Если я упакую их в один и тот же EAR, все будет в порядке. Есть ли способ сначала развернуть EJB, а затем WAR?

Если я попробую, мой EJB JAR развернется хорошо, но когда я разверну свою WAR, я получаю следующую ошибку (в JBoss AS 7.1.1):

MSC00001: Failed to start service jboss.deployment.unit."mwf_web.war".STRUCTURE:           org.jboss.msc.service.StartException in service jboss.deployment.unit."mwf_web.war".STRUCTURE: Failed to process phase STRUCTURE of deployment "mwf_web.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_31]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_31]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_31]
Caused by: java.lang.IllegalArgumentException: Given parent is not an ancestor of this virtual file
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:116)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)
    at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:110)
    at org.jboss.as.server.deployment.module.ManifestClassPathProcessor.createAdditionalModule(ManifestClassPathProcessor.java:193) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.deployment.module.ManifestClassPathProcessor.handlingExistingClassPathEntry(ManifestClassPathProcessor.java:185) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.deployment.module.ManifestClassPathProcessor.deploy(ManifestClassPathProcessor.java:160) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more

в файле META-INF / MANIFEST.MF я добавил оператор "Class-Path", чтобы определить зависимость стандартным способом:

Manifest-Version: 1.0
Dependencies: org.apache.log4j
Class-Path: mwf_ejb.jar

person DenisGL    schedule 14.04.2012    source источник


Ответы (1)


Мне наконец удалось заставить его работать с этим файлом MANIFEST.MF:

Manifest-Version: 1.0
Dependencies: org.apache.log4j, deployment.mwf_ejb.jar

Плюс добавление атрибута поиска в моих аннотациях @EJB (которые изначально были пустыми: @EJB):

@EJB(lookup="java:global/mwf_ejb/UserManager")

Однако я думаю, что префикс deployment. подходит для JBoss, но не для других серверов приложений.

person DenisGL    schedule 14.04.2012