将 EJB 注入 Seam 组件

发布于 2024-10-29 04:02:05 字数 1221 浏览 1 评论 0原文

伙计们。我有一个在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不及他 2024-11-05 04:02:05

在 Components.xml 中将 EJB 定义为 Seam 组件

Define your EJB as Seam components in your components.xml

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文