EJB进入SEAM组件(不同的项目和相同的JBoss)

时间:2009-10-21 19:04:41

标签: jboss ejb-3.0 seam

我有以下设置:

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")
}

关于如何解决这个问题的任何想法?

提前致谢。

}

1 个答案:

答案 0 :(得分:2)

您的ComponentX类不是EJB,因此您无法使用@EJB注释来注入它们。你有几个选择。将ComponentX转换为EJB,添加@Stateless或@Statefull以及接口@Local或@Remote,这样AS会注意到ComponentX是一个EJB,并且知道如何处理所需的注入。另一个选项是让ComponentX只是一个组件,并使用InitialContext#lookup手动获取对“beanA / remote”的引用。