WAR中的无状态ejb>包装到EAR>本地ejb电话

时间:2017-04-03 01:15:04

标签: java dependency-injection ejb cdi ejb-3.0

我有一个包含2个战争文件的耳朵,每个战争包含无状态的ejb和泽西休息类。接口位于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 deployment failure:WELD-001408: Unsatisfied dependencies错误。当我在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文件中。 解决办法是什么?

1 个答案:

答案 0 :(得分:2)

您需要将stateless-ejb-1移动到EAR中的ejb-jar模块中。

不同WAR文件中的类永远不会彼此可见,即使构建到EAR文件中也是如此。