我的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>
答案 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)