Java EAR中的WAR-jboss-deployment-structure.xml被忽略
我的EAR由一个普通jar、一个EJB jar和一个WAR组成。WAR使用spring上下文,因此它依赖于META-INF目录中的spring命名空间描述文件 我的WAR/jboss-deployment-structure.xml包含Java EAR中的WAR-jboss-deployment-structure.xml被忽略,java,jboss,jboss7.x,jboss-eap-6,Java,Jboss,Jboss7.x,Jboss Eap 6,我的EAR由一个普通jar、一个EJB jar和一个WAR组成。WAR使用spring上下文,因此它依赖于META-INF目录中的spring命名空间描述文件 我的WAR/jboss-deployment-structure.xml包含 <module name="org.springfw"> <imports> <include path="META-INF**" /> <include path="org**"
<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并添加了“Dependencies:org.springfw”,应用程序在启动时失败,原因是:
找不到XML架构命名空间的Spring NamespaceHandler[
这意味着类可用,但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>
您尝试过使用模块描述符吗?在
部署结构.xml
中指定
如前所述,这个xml应该在顶级ear 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>
另请参见部署结构必须位于顶级META-INF文件夹中,因此对于EAR,它应该位于EAR的META-INF中。如果我理解正确,Jboss只允许EAR中有一个deployment-structure.xml?也许它会忽略它,我对类似问题的解决方案是在Jboss部署中向模块添加依赖项-export=“true”的ear结构(顶级部署)。其他信息:在我的arquillian测试中,为了能够使用该模块,我必须在构建WebArchive()时添加以下内容:war.setManifest(new StringAsset(“Dependencies:some.thing\n”);我在问题中添加了模块描述符,但META-INF不可见。