2014-10-01 108 views
2

我的EAR由一個通用jar,一個EJB jar和一個WAR組成。 WAR使用spring上下文,所以它依賴於META-INF direcotry中的spring-namespace描述文件。EAR中的WAR - 忽略jboss-deployment-structure.xml

我WAR/JBoss的部署,structure.xml包含

<module name="org.springfw"> 
    <imports> 
     <include path="META-INF**" /> 
     <include path="org**" /> 
    </imports> 
</module> 

如果我部署EAR和seperatly戰爭中,應用程序完美的作品。

通過在EAR內部部署相同的WAR,它會因ClassNotFoundException(org.spring ... ContextLoaderListener)而失敗。

好吧,我編輯WAR/META-INF/MANIFEST.MF,並添加 「依賴關係:org.springfw」,在應用程序啓動時失敗:

無法找到春天NamespaceHandler XML模式命名空間[http://www.springframework.org/schema/context]

這意味着類是可用的,但不是META-INF文件。總結:如果我在EAR中部署一個WAR,我仍然可以通過WAR的清單(工程,但不能導入META-INF目錄)導入模塊,但是WEB-INF/jboss- deployment-structure.xml將始終被忽略。

編輯:

模塊描述符是

<resource-root path="spring-context-3.2.10.RELEASE.jar"> 
     <filter> 
      <include path="META-INF**" /> 
      <include path="org**" /> 
     </filter> 
</resource-root> 
+1

部署結構必須在頂層META-INF文件夾,所以在EAR的情況下,它應該是在EAR的META-INF。 – cy3er 2014-10-01 08:57:42

+0

如果我理解正確,Jboss只允許EAR中的一個deployment-structure.xml? – 2014-10-01 09:16:01

+0

也許它會忽略它,[doc](https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7#ClassLoadinginAS7-JBossDeploymentStructureFile) – cy3er 2014-10-01 09:19:52

回答

1

在您的deployment-structure.xml中指定<sub-deployment>

正如已經說過的,這個xml應該處於頂級的耳朵meta-Inf中。

又見jboss-deployment-structure.xml does not loads the dependencies in My EAR project

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/評論/低質量帖/ 11462914) – MSeifert 2016-03-02 02:00:35

+0

當然,我很欣賞和指出。 – 2016-03-09 13:35:40