我们正在使用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/

10-14 08:05