【发布时间】:2011-07-28 01:53:29
【问题描述】:
伙计们。我有一个在 Tomcat 6.0.20 (webapp.war) 上运行的 Seam 项目和一个在 JBoss 4.2.3 (ejbapp.ear) 上运行的 EJB 项目。
我可以使用 JNDI 查找 [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 文件中的 web 项目中,它就不会自动加载,并且尝试上面的场景,我得到了同样的错误。
仅供参考,我还在 ejb-jar.xml 文件中声明了 Seam 拦截器。 我不知道为什么会这样,顺便说一句,我认为 Seam 处理起来很简单。
无论如何...,还有其他建议吗,伙计们?
【问题讨论】:
标签: components ejb-3.0 seam lookup code-injection