我们可以将ejb依赖添加到战争中,还是一种不好的做法

时间:2014-08-07 17:01:09

标签: java ejb war ear parent-pom

我有一个多模块maven项目: 有三个模块jar,war和ejb

我需要在我的战争中添加ejb依赖来访问ejb bean所以我创建了一个耳朵并将其添加到其中但仍然无法找到ejb bean类。这是耳朵的pom文件。任何人都可以帮助我。并告诉我,我可以直接在战争或父母pom中添加我的ejb依赖关系,因为我已经在某处读到了直接添加ejb依赖关系的不良做法。

http://maven.apache.org/xsd/maven-4.0.0.xsd">     4.0.0              ecommunicate.trutheq.ussdproject         pom.parent         1.0          Ussd.Project.EAR     耳

<dependencies>
    <dependency>
        <groupId>ecommunicate.trutheq.ussdproject</groupId>
        <artifactId>Ussd.Project.Login</artifactId>
        <version>1.0</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>ecommunicate.trutheq.ussdproject</groupId>
        <artifactId>Ussd.Project.Ejb</artifactId>
        <version>1.0</version>
        <type>ejb</type>
    </dependency>
    <dependency>
        <groupId>ecommunicate.trutheq.ussdproject</groupId>
        <artifactId>Common.Utilities</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>

        <plugin>

            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <earSourceDirectory>EarContent</earSourceDirectory>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>ecommunicate.trutheq.ussdproject</groupId>
                        <artifactId>Ussd.Project.Login</artifactId>
                    </webModule>

                    <ejbModule>
                        <groupId>ecommunicate.trutheq.ussdproject</groupId>
                        <artifactId>Ussd.Project.Ejb</artifactId>
                        <bundleFileName>Ussd.Project.Ejb-1.0-jar-with-dependencies.jar</bundleFileName>

                    </ejbModule>

                </modules>

            </configuration>
        </plugin>
    </plugins>
</build>

2 个答案:

答案 0 :(得分:1)

.war模块中的依赖关系可能如下所示。我不确定为什么它可以被视为一种不好的做法,我想不出另一种方法可以在你的war模块中访问你的ejb模块。可能作者的想法是直接在war的lib文件夹中添加ejb .jar而不是将它保存在.ear的lib文件夹中。您阅读它的资源的链接可以帮助澄清这个想法

    <dependency>
        <groupId>ecommunicate.trutheq.ussdproject</groupId>
        <artifactId>Ussd.Project.Ejb</artifactId>
        <version>1.0</version>
        <type>ejb-client</type>
        <scope>provided</scope>
    </dependency>

答案 1 :(得分:0)

您可以在war模块中使用任意数量的ejb jar依赖项,并确保 不良做法

但是你应该在pom.xml的范围部分中将该依赖关系标记为“提供”,因为它已经在该EAR的顶层可用。

EAR
|
|-lib/someutil.jar
|-EJB.jar
|-my-web.war
|  |-WEB_INF/lib
|    |-coolutil.jar
|-EJB2.jar

在这里,my-web.war可以依赖于EJB.jar(提供范围)。