【问题标题】:Expose one jar to many wars in ear structure将一罐暴露在耳朵结构中的许多战争中
【发布时间】:2016-09-08 14:04:29
【问题描述】:

我有一个带有耳朵结构的 maven 项目,我正在将耳朵部署在 Wildfly 9.0.0 上

我有一个带有 jpa 的 jar 进行持久性,我有 3 个使用这个 jar 的战争,如果我在其中一个战争中将这个 jar 导入到 pom 上,这没关系,但是如果我在两次战争中导入这个 jar,CDI不工作。

我真正想做的是把这个罐子暴露在耳朵里的所有战争中,而不是在每个战争 pom 中导入

【问题讨论】:

    标签: java maven war wildfly ear


    【解决方案1】:

    你可以:

    1. 停止服务器

    2. 打开服务器配置文件。 (独立/配置/standalone.xml)

    3. 在配置文件中找到 EE 子系统配置元素。配置文件的配置文件元素包含几个子系统元素。 EE 子系统元素的命名空间为 urn:jboss:domain:ee:1.2。

    4. 必要时替换自闭标签

    5. 添加 ear-subdeployments-isolated 元素

    6. 启动服务器

    请注意,这会禁用所有部署的子部署模块隔离,而不仅仅是此部署。 documentation for all deployments

    如果您只想进行此特定部署,您应该:

    1. 添加部署描述符文件

    2. 添加 ear-subdeployments-isolated 元素

      documentation for specific deployment

    这对 JBOSS EAP 有效,其行为与 JBOSS wildfly 非常相似。

    编辑:正如@Will T 在 cmets 中正确声明的那样,应添加范围为 <scope>provided<scope/> 的 jar 的战争依赖项。

    【讨论】:

    • 我已经把这个配置好了,我的问题是如何配置 pom 来为所有战争提供 jar 而不在战争 poms 中导入
    • 您确定必须在每个子部署的 pom 中显式声明依赖关系吗?我认为将 ear-subdeployments-isolated 设置为 false 会使战争隐含地依赖于您想要的 jar。
    • 来自文档:如果 ear-subdeployments-isolated 设置为 false,则 web.war 中的类可以访问属于 ejb1.jar 和 ejb2.jar 的类。类似地,ejb1.jar 中的类可以访问 ejb2.jar 中的类(反之亦然)。如果 ear-subdeployments-isolated 设置为 true,则不会设置子部署之间的自动模块依赖关系。用户必须使用 Class-Path 条目手动设置依赖关系,或者通过设置显式模块依赖关系。 (docs.jboss.org/author/display/AS7/…)
    • 您要确保每个战争的 pom 将 jar 列为 provided,因为这将为编译提供类,但不会包含在战争中。然后,您可以确保您的耳朵包含罐子
    • 使用 ear-subdeployments-isolated 和 provided 元素解决了我的问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多