将资源注入无状态本地EJB

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将资源注入无状态本地EJB相关的知识,希望对你有一定的参考价值。

我有@Local接口和@Stateless实现。

在实现上是@Resource(mappedName =“java:/ XXMail”)javax.mail.Session。

它仍保持为null并且未注入,但通过InitialContext进行的JNDI查找工作正常。

任何想法我可以检查或如何调试这个?我们中的几个人已经倾倒了一段时间而没有任何运气。道歉,我无法发布代码本身,因为它是在一个封闭的网络上。

答案

虽然这个问题可能不再适用,但根本问题及其解决方案可能对其他问题有价值。在大多数情况下,问题是由实例化实现bean的新对象而不是使用代理接口引起的,如:

ObjectBean obj = new ObjectBean();

这不会触发CDI,因此所有带注释的资源都将为null。通过查找JNDI或带注释的资源来使用该接口将解决此问题:

ObjectBeanInterface obj = new InitialContext().lookup("java:module/ObjectBean!org.mycompany.ObjectBeanInterface");

以上是关于将资源注入无状态本地EJB的主要内容,如果未能解决你的问题,请参考以下文章

在其他模块的 JSF ManagedBean 中通过 @EJB(lookup) 注入远程无状态 EJB

迁移到 JBOSS 7.4 和 Java11 后未正确注入 EJB 无状态 bean

使用 CDI 将 Logger 注入 Ejb

关于 EJB 和资源注入的问题

我可以使用带有 CDI 的 EJB 无状态 Bean 来维护用户会话吗?

EJB 教程推荐