我们正在使用 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 的依赖项并定义为 ejbModule
。在 maven-ear-plugin 配置中。
关于我们如何设置它的任何想法?
最佳答案
你可以试试这个(所有发生在 jboss-deployment-structure.xml
):
1) 启用 Weld 子系统。基本上,删除它排除:它是 implicit dependency ,因此无需在任何模块中显式依赖它。
2) war
s 应该始终被视为孤立的,但要确保您可以添加以下内容:
<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/