我们正在使用Wildfly 8.2.0.Final,Maven 2.2.1,Seam 2.2.0.GA和Weld 2.2.6.Final。
我们有一个EAR文件,其中包含旧的WAR,新的WAR和其他模块。传统的WAR依赖于Seam,但是新的WAR和EAR中的其余模块都依赖Weld。
当前,只有旧版WAR在工作,因为jboss-deployment-structure.xml
中排除了Weld子系统,直到我们可以以某种方式将Seam隔离到旧版WAR为止。我们试图从EAR中删除Seam并将其作为旧式WAR的依赖项进行上移,但这没有用。要使用EJB,似乎它需要是EAR的依赖项,并在maven-ear-plugin配置中定义为ejbModule
。
关于我们如何进行设置的任何想法?
最佳答案
您可以尝试执行此操作(所有操作都在jboss-deployment-structure.xml
中进行):
1)启用 Weld 子系统。基本上,删除它是排除的:它是implicit dependency,因此在任何模块中都无需显式依赖它。
2)war
应该始终被视为孤立的,但是要确保可以添加以下内容:
<subsystem xmlns="urn:jboss:domain:ee:1.0" >
<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
</subsystem>
3)对于旧的
war
子部署,请为Weld提供明确的排除。4)对于其他所有模块,请提供对Seam的明确排除。*
我认为您已经检查过了,但是:Class Loading in WildFly
*有关模块排除的更新:
如果仍作为AS的模块提供,则应将其找到
modules/
,检查其module.xml
的模块名称,然后使用类似的排除项:<exclusions>
<module name="module_name" />
</exclusions>
如果您在旧版 war
WEB-INF/lib/
中提供它,那么我认为应该什么也不做。或者您可以手动将其注册为模块,然后排除:)关于maven - 在启用了Weld的EAR的单个旧式WAR中使用Seam,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30247426/