将 EJB 注入 Seam 组件
伙计们。我有一个在 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 来说是一件很简单的事情。
无论如何……还有其他建议吗,伙计们?
guys. I have a Seam project running on Tomcat 6.0.20 (webapp.war) and an EJB project running on JBoss 4.2.3 (ejbapp.ear).
I can access my EJBs in my Seam components using JNDI lookup [initialContext.lookup(...)].
I'd like to have them injected in my Seam components instead.
My Seam components ARE NOT EJBs, so I can't use @EJB annotation. I'd like to have something like this in my Tomcat (Web) app.
@Name("customerAction")
public class CustomerAction {
@In // even with (autoCreate=true) or the EJB name if necessary
private CustomerEJB customerEJB;
...
}
And this in the JBoss (EJB) app.
@Stateless(name="customerEJB")
public class CustomerEJBImpl implements CustomerEJB {
...
}
@Remote
public interface CustomerEJB {
...
}
In my components.xml I have the jndiPattern=ejbapp/@jndiPattern/remote specified just like I currently use to lookup the EJBs (ex: ejbapp/CustomerEJB/remote).
I'm probably missing something in my configuration to make this work.
PS: I'd like NOT HAVE to annotate my EJBs as @Name (Seam) components.
Any suggestions? Thanks in advance.
Thanks for your reply, but it didn't work.
When I declared the EJBs in components.xml, it did inject the object in my Action (Seam component), but as a POJO. I mean, the EntityManager and other EJB injections I had in the injected object didn't work.
I also tried to define the EJB as a Seam component, but, once they are in the webproject inside a JAR file, it didn't load automatically, and trying the scenario above, I got the same error.
Just an FYI, I also declared the Seam interceptor in ejb-jar.xml file.
I have no idea why this is happening, BTW I thought it would be quite a simple thing for Seam to handle.
Anyway..., any other suggestions, guys?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 Components.xml 中将 EJB 定义为 Seam 组件
Define your EJB as Seam components in your components.xml