EAR中的WAR - jboss-deployment-structure.xml被忽略

时间:2014-10-01 08:31:14

标签: java jboss jboss7.x jboss-eap-6

我的EAR包含一个common-jar,一个EJB-jar和一个WAR。 WAR使用spring上下文,因此它取决于META-INF目录中的spring-namespace描述文件。

我的WAR / jboss-deployment-structure.xml包含

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

如果我单独部署EAR和WAR,应用程序将完美运行。

通过在EAR内部部署相同的WAR,它失败并出现ClassNotFoundException(org.spring ... ContextLoaderListener)。

好吧,我编辑了我的WAR / META-INF / Manifest.MF并添加了&#34;依赖项:org.springfw&#34;,应用程序在启动时失败:

  

无法找到XML架构命名空间[http://www.springframework.org/schema/context]

的Spring NamespaceHandler

这意味着这些类可用,但不是META-INF文件。

总结一下:如果我在EAR中部署一个WAR,我仍然可以通过WAR的Manifest导入模块(有效,但无法导入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>

2 个答案:

答案 0 :(得分:1)

<sub-deployment>中指定deployment-structure.xml

如上所述,这个xml应该是顶级耳朵meta-Inf。

<jboss-deployment-structure>
 <sub-deployment name="myapp.war">
   <dependencies>
     <module name="org.javassist" export="true" />
     <module name="org.apache" export="true"/>
     <module name="org.antlr" export="true"/>
     <module name="org.dom4j" export="true"/>
     <module name="org.apache" export="true"/>
     <module name="org.hibernate" export="true"/>
   </dependencies>
 </sub-deployment>

另见jboss-deployment-structure.xml does not loads the dependencies in My EAR project

答案 1 :(得分:0)

您是否尝试过使用模块描述符? https://docs.jboss.org/author/display/MODULES/Module+descriptors