人。我有一个在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处理起来会非常简单。
无论如何...,还有其他任何建议吗?
答案 0 :(得分:0)
将您的EJB定义为components.xml中的Seam组件