EJB 也充当服务器和 ejb 客户端时出现 Maven 循环依赖错误

问题描述 投票:0回答:1

我创建了两个结构相同的项目,将使用 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的解决方案 我该怎么办?

java maven ejb wildfly circular-dependency
1个回答
0
投票

您不能像构建工具中那样具有循环依赖关系,因为它必须先构建一个。然而,两者缺一不可。您可能需要考虑以不同的方式处理这个问题。要么将常见类型放入自己的库中,要么将两者合并到一个库中。

© www.soinside.com 2019 - 2024. All rights reserved.