【问题标题】:JBoss AS 7: Non-EJB dependency in another EARJBoss AS 7:另一个 EAR 中的非 EJB 依赖
【发布时间】:2013-08-15 08:54:18
【问题描述】:

我有一个结构如下的 EAR:

ear.ear    
  mywar.war
    lib
      jar1.jar
      jar2.jar
      jar3.jar

我在部署目录中有多个 WAR,我希望它们有 jar1.jar。 ear.ear 中的 jar2.jar 和 jar3.jar 作为依赖项。

这可能吗?

我已经为 jboss-deployment-structure.xml 尝试了以下方法,但没有成功。

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="deployment.ear.ear.jar1.jar"/>
            <module name="deployment.ear.ear.jar2.jar"/>
            <module name="deployment.ear.ear.jar3.jar"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

<?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
        <deployment>
            <dependencies>
                <module name="deployment.ear.ear.lib.jar1.jar"/>
                <module name="deployment.ear.ear.lib.jar2.jar"/>
                <module name="deployment.ear.ear.lib.jar3.jar"/>
            </dependencies>
        </deployment>
    </jboss-deployment-structure>

是否可以在单独的 EAR 中具有非 ejb JAR 依赖项?

【问题讨论】:

    标签: jboss7.x


    【解决方案1】:

    您应该能够将依赖项放在您耳朵的/lib 文件夹中,您的战争应该会看到它们。

    来自 JBoss AS7 文档:

    Ear 部署是多模块部署。这意味着不是所有 耳朵里面的类必然可以访问所有其他的 耳中的类,除非已定义明确的依赖关系。经过 默认 EAR/lib 目录是单个模块,并且每个 WAR 或 EJB jar 部署也是一个单独的模块。子部署(战争和 ejb-jars) 总是依赖于父模块,这给 它们可以访问 EAR/lib 中的类,但它们并不总是具有 自动相互依赖

    您还可以阅读有关 JBoss AS 7 中类加载的更多信息:https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7

    【讨论】:

    • 我遇到的问题是我在 EAR 之外部署了 WAR。似乎这些 WAR 只能依赖于该 EAR 内的 EJB JAR。我认为解决我的问题的最好方法是创建一个自定义 jboss 模块并将我的依赖项放在那里。感谢您的帮助!
    【解决方案2】:

    ear 中的 Jar 文件作为单个模块部署。您可以使用 jboss-deployment-structure.xml 通过指定对 ear 本身的依赖关系来指示对这些的依赖关系。您还需要单独包含任何 ejb 并包含 export="TRUE"。

    例如:

    <?xml version="1.0" encoding="UTF-8"? xmlns="urn:jboss:deployment-structure:1.2">
    <jboss-deployment-structure>
        <deployment>
            <dependencies>
                <!-- our module depends on the libs within myear.ear -->
                <module name="deployment.myear.ear" export="TRUE"/>
                <!-- and these ejbs -->
                <module name="deployment.myear.ear.ejb1.jar" export="TRUE"/>
                <module name="deployment.myear.ear.ejb2.jar" export="TRUE"/>
                <module name="deployment.myear.ear.ejb3.jar" export="TRUE"/>
            </dependencies>
        </deployment>
    </jboss-deployment-structure>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      相关资源
      最近更新 更多