我创建了两个结构相同的项目,将使用 WildFly 29 Domain 打包并部署。 一个项目包含一个EJB模块和一个WEB模块
让他们成为A和B
我做了一些研究,并且遵循了 quickstart-ejb-multi-server 并且 A 和 B 具有相同的结构。 我已经能够从 B 调用 A,但是当我尝试从 A 调用 B 时,我遇到了 maven 循环依赖 的问题,因为 A 的 EJB 必须位于 B 的 pom.xml 依赖项中,并且与 B 的 EJB 相同必须在A的pom.xml依赖中
主要的pom.xml包含:
<modules>
<module>A</module>
<module>B</module>
</modules>
A 或 B' pom.xml 包含:
<modules>
<module>ejb</module>
<module>web</module>
<module>ear</module>
</modules>
还有B的EJB pom.xml:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>A-ejb</artifactId>
<version>${project.version}</version>
<type>ejb-client</type>
</dependency>
<dependency>
<groupId>jakarta.ejb</groupId>
<artifactId>jakarta.ejb-api</artifactId>
<scope>provided</scope>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<scope>provided</scope>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-ext-api</artifactId>
<scope>provided</scope>
<version>2.2.0.Final</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.8.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<ejbVersion>3.2</ejbVersion>
<generateClient>true</generateClient>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
</plugins>
</build>
我可以从 B 调用 A,但现在不能执行相反的操作 我已经搜索过如何解决循环依赖,但没有找到EJB的解决方案 我该怎么办?
您不能像构建工具中那样具有循环依赖关系,因为它必须先构建一个。然而,两者缺一不可。您可能需要考虑以不同的方式处理这个问题。要么将常见类型放入自己的库中,要么将两者合并到一个库中。