-1

我有一个多模块 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 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>

4

2 回答 2

1

.war 模块中的依赖项可能如下所示。我不确定为什么它会被认为是一种不好的做法,而且我想不出另一种方法可以让你的 ejb 模块在你的 war 模块中可访问。可能作者的想法是直接在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>
于 2014-08-08T22:30:06.037 回答
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(具有提供的范围)。

于 2015-08-03T14:51:37.907 回答