将EJB注入Seam组件

时间:2011-04-02 00:46:57

标签: components ejb-3.0 seam lookup code-injection

人。我有一个在Tomcat 6.0.20(webapp.war)上运行的Seam项目和一个在JBoss 4.2.3(ejbapp.ear)上运行的EJB项目。

我可以使用JNDI lookup [initialContext.lookup(...)]在我的Seam组件中访问我的EJB。 我希望将它们注入我的Seam组件中。

我的Seam组件不是EJB,所以我不能使用@EJB注释。我希望在我的Tomcat(Web)应用程序中有这样的东西。

@Name("customerAction")
public class CustomerAction {

    @In // even with (autoCreate=true) or the EJB name if necessary
    private CustomerEJB customerEJB;

    ...
}

这是在JBoss(EJB)应用程序中的。

@Stateless(name="customerEJB")
public class CustomerEJBImpl implements CustomerEJB {
    ...
}

@Remote
public interface CustomerEJB {
    ...
}

在我的components.xml中,我指定了jndiPattern = ejbapp / @jndiPattern / remote,就像我目前用来查找EJB一样(例如:ejbapp / CustomerEJB / remote)。

我可能在配置中遗漏了一些东西来完成这项工作。 PS:我不想将我的EJB注释为@Name(Seam)组件。

有什么建议吗?提前谢谢。


感谢您的回复,但它没有用。

当我在components.xml中声明EJB时,它确实在我的Action(Seam组件)中注入了对象,但是作为POJO。我的意思是,我在注入对象中的EntityManager和其他EJB注入不起作用。

我还尝试将EJB定义为Seam组件,但是,一旦它们在JAR文件中的webproject中,它就不会自动加载,并且尝试上面的场景,我得到了同样的错误。

只是一个FYI,我还在ejb-jar.xml文件中声明了Seam拦截器。 我不知道为什么会发生这种情况,顺便说一下,我认为Seam处理起来会非常简单。

无论如何...,还有其他任何建议吗?

1 个答案:

答案 0 :(得分:0)

将您的EJB定义为components.xml中的Seam组件