我有以下设置:
JBoss 4.2.3
在那之下我有:
--> Project A (Wich is not SEAM 2.1.2GA based) EJBs: * beanA (JNDI = beanA/remote) * beanB (JNDI = beanB/remote) --> Project B (SEAM based) EJBs / Components: * ComponentX * ComponentY
在组件X上,我有当前的代码:
@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")
}
关于如何解决这个问题的任何想法?
提前致谢。
}
答案 0 :(得分:2)
您的ComponentX类不是EJB,因此您无法使用@EJB注释来注入它们。你有几个选择。将ComponentX转换为EJB,添加@Stateless或@Statefull以及接口@Local或@Remote,这样AS会注意到ComponentX是一个EJB,并且知道如何处理所需的注入。另一个选项是让ComponentX只是一个组件,并使用InitialContext#lookup手动获取对“beanA / remote”的引用。