WAR 中的无状态 ejb > 打包到 EAR > 本地 ejb 调用
stateless ejb in WAR > package to EAR > local ejb call
我有一个包含 2 个 war 文件的耳朵,每个 war 包含无状态的 ejb 和 jersey rest 类。接口位于 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
我正在尝试使用带 @Inject
注释的 stateless-ejb-2 中的 stateless-ejb-1,但我在部署期间收到 CDI deployment failure:WELD-001408: Unsatisfied dependencies
错误。当我在 stateless-ejb-2 中使用 @EJB 时,ear 已部署,但在调用 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 文件中也是如此。
我有一个包含 2 个 war 文件的耳朵,每个 war 包含无状态的 ejb 和 jersey rest 类。接口位于 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
我正在尝试使用带 @Inject
注释的 stateless-ejb-2 中的 stateless-ejb-1,但我在部署期间收到 CDI deployment failure:WELD-001408: Unsatisfied dependencies
错误。当我在 stateless-ejb-2 中使用 @EJB 时,ear 已部署,但在调用 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 模块中。
类 永远不会相互可见,即使内置到 EAR 文件中也是如此。