gpt4 book ai didi

java - 我应该如何在每个模块中定义Pom.xml,以便web模块可以与其他两个ejb模块通信?

转载 作者:行者123 更新时间:2023-12-01 15:12:06 25 4
gpt4 key购买 nike

Maven,Maven,Maven。它一定非常好,而且通过一个小应用程序就很好了。

现在我想构建一个ear项目:用两个EJB模块、一个web模块和ear模块来构建一个ear文件。Web 模块依赖于其他 ejb 模块..

我应该如何在每个模块中定义Pom.xml,以便web模块可以与ear中的其他两个ejb模块通信,并且ear模块构建正确的ear文件?

我之前做过什么:

模块 1 --> 基本模块。所有其他模块都依赖于该模块。登录等基本功能。

<packaging>ejb</packaging>

模块 1 --> 数据模块。所有实体都在这里类型 EJB

<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_Basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency

模块 2 --> 业务模块。商业立面就在这里。类型EJB

<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_Basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency

Web 模块 -> 类型为 WAR

<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_Basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency

EAR 模块 --> 在这个项目中,我尝试构建该项目。

<packaging>ear</packaging>

<dependencies>
<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_Basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency
<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_Business</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency
<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_WEB</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
</plugin>
</plugins>
</build>

最佳答案

您应该有一个单独的 jar 模块,包含您的 ejb 接口(interface)和相关接口(interface)对象(即您的 ejb API)。 (顺便说一句,这个问题与 Maven 无关,使用任何构建系统都会遇到同样的问题)。您当前的设置有 4 个模块(2 个 ejb、1 个 war、1 个 Ear)。相反,您应该有 5 个模块:

  • EJB API(jar):仅 ejb 接口(interface)以及这些接口(interface)中可能使用的数据对象
  • EJB A,B (ejb):ejb 实现,取决于 API jar
  • WEB(war):取决于 API jar,而不是 ejb jar
  • EAR(耳朵):依赖于ejbs和war。

这是典型的客户端/服务器设置。您的服务器通常由“公共(public) API”模块和“实现”模块组成。 “公共(public) API”将分发给任何客户端实现。

更新:

我可能误解了你的问题(自从我完成 Java EE 的工作以来也已经有一段时间了)。我认为您可能只需要将 war 模块中的“基本”依赖项标记为范围“提供”,例如:

<dependency>
<groupId>com.myCompnay</groupId>
<artifactId>Modul_Basic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
<scope>provided</scope>
</dependency>

这将允许您针对类进行编译,但 ejb jar 不会包含在 war 中。我相信可以从war类加载器中获得ejb jar。

关于java - 我应该如何在每个模块中定义Pom.xml,以便web模块可以与其他两个ejb模块通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12201225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com