2012-04-14 114 views
2

我有一個EJB(mwf_ejb.jar)和一個WAR(mwf_web.war)的應用程序。如果我將它們打包在同一個EAR中,一切都可以。有什麼方法可以先部署EJB,然後再部署WAR?JBoss AS 7:如何獨立部署EJB和相關的WAR?

如果我試試吧,我的EJB JAR部署好了,但是當我部署我的戰爭,我得到以下錯誤(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 /清單.MF,我添加了一個「類路徑」語句,來定義標準的方式依賴:

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

回答

3

我finaly管理,使其工作,與此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的,但不能用於其他應用服務器。