我有一个包含 2 个 war 文件的耳朵,每个 war 都包含无状态的 ejb 和 jersey 休息类。接口(interface)位于 commons.jar 文件中。 EAR 结构如下所示:
EAR
-- /lib/commons.jar
-- rest-1.war
-- stateless-ejb-1.java
-- jersey-rest-1.java
-- rest-2.war
-- stateless-ejb-2.java
-- jersey-rest-2.java
我尝试使用 stateless-ejb-2 中的 stateless-ejb-1 和 @Inject
注释,但收到 CDI 部署失败:WELD-001408:不满足的依赖项
部署期间出错。当我在 stateless-ejb-2 中使用 @EJB 时,耳朵已部署,但在调用 jersey-rest-2 时出现远程查找错误。
这是我的方法调用链:
- jersey-rest-1 > stateless-ejb-1:工作正常
- jersey-rest-2 > stateless-ejb-2 > stateless-ejb-1:我收到 ejb-1 查找错误
我不想使用远程ejb调用,因为所有东西都打包在同一个耳朵中(我想使用@Inject而不是@EJB),但它不起作用。
我想如果我将 stateless-ejb-1.java 打包到一个 jar 中并将其放在 EJB/lib 下,它就会工作。但我不想在我的项目中创建一个新模块只是为了将这个文件打包到单独的 jar 文件中。 解决办法是什么?
最佳答案
您需要将 stateless-ejb-1
移动到 EAR 中的 ejb-jar 模块中。
不同 WAR 文件中的类彼此之间永远不可见,即使构建到 EAR 文件中也是如此。
关于java - WAR 中的无状态 ejb > 打包到 EAR > 本地 ejb 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175246/