我有以下设置:
JBoss 4.2.3
在那之下我有:
--> Project A (Which is not SEAM 2.1.2GA based) EJBs: * beanA (JNDI = beanA/remote) * beanB (JNDI = beanB/remote) --> Project B (SEAM based) EJBs / Components: * ComponentX * ComponentY
On component X I have the current piece of code:
@Scope(ScopeType.CONVERSATION)
@Name("ComponentX")
public class ComponentX implements java.io.Serializable {
...
@EJB
beanAInterface beanA;
....
public foo(){
beanA.bar(); // <--------- beanA is null, even with mapped name and etc., only works
// if I direct lookup with Context().lookup("beanA/remote")
}
关于如何解决这个问题有什么想法吗?
最佳答案
您的 ComponentX 类不是 EJB,因此您不能使用 @EJB 注释来注入(inject)它们。你有几个选择。将您的 ComponentX 转换为 EJB,添加 @Stateless 或 @Statefull 和一个接口(interface) @Local 或 @Remote,这样 AS 就会注意到 ComponentX 是一个 EJB,并且知道如何处理所需的注入(inject)。另一种选择是让 ComponentX 只是一个组件,并使用 InitialContext#lookup 手动获取对“beanA/remote”的引用。
关于jboss - EJB 到 SEAM 组件(不同的项目和相同的 JBoss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602931/