【问题标题】:Injecting a Resource into a Stateless Local EJB将资源注入到无状态本地 EJB
【发布时间】:2011-08-10 19:54:51
【问题描述】:

我有一个带有@Stateless 实现的@Local 接口。

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

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

有什么想法可以检查或如何调试吗?我们中的一些人已经为此倾倒了一段时间,但没有任何运气。抱歉,我无法发布代码本身,因为它位于封闭的网络上。

【问题讨论】:

  • 但是您可以创建重现问题的示例应用程序,以便我们也可以尝试并重现它。
  • 我没有看到这增加了任何价值。
  • 我可以看到您已将其标记为 jboss-5.x,但这是哪个特定版本,您可以发布您的邮件会话的配置吗?
  • 您是如何获得 EJB 的实例的?也许 EJB 及其客户端的一些示例代码会澄清。

标签: java jakarta-ee dependency-injection jboss5.x


【解决方案1】:

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

ObjectBean obj = new ObjectBean();

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

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

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2012-08-26
    相关资源
    最近更新 更多