maven - 在其他启用 Weld 的 EAR 的单个遗留 WAR 中使用 Seam

标签 maven seam ear wildfly-8 weld

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

相关文章:

database - Seam 实体不持久化数据库

java - identity.logout() 之后出现 ViewExpiredException;在 JBoss 中

java - 杀死已捕获 OutOfMemoryError 的应用程序

gradle - Gradle:设置Web应用程序的上下文根

java - Maven 未在多模块项目中通过 Eclipse 运行测试

java - 生成的查询包含架构和目录名称

java - org.openqa.selenium.WebDriverException : unknown error: Chrome failed to start: crashed (headless chrome)

java - Maven多项目库依赖

java - Maven:如何排除或设置提供给其他依赖项拖动的依赖项

java - 如何解决使用GluonHQ客户端、Native Image和GraalVM编译的JavaFX项目中的fxml加载异常?