【问题标题】:Java EE CDI Class-based injectionJava EE CDI 基于类的注入
【发布时间】:2012-11-29 19:42:47
【问题描述】:

我正在阅读 Java EE CDI,但我对基于类的资源注入的工作原理感到困惑

Java EE 6 教程给出了以下示例用法:

@Resource(name="myMessageQueue",
                type="javax.jms.ConnectionFactory")
public class SomeMessageBean {
...
}

我知道它是如何声明的,但是声明的资源应该如何在SomeMessageBeanClass 中使用?注入的myMessageQueue资源是什么?

【问题讨论】:

    标签: jakarta-ee cdi


    【解决方案1】:

    @Resource 在源自 EJB 的注释中。

    它的历史可以追溯到可以注入田间的日子。在那些日子里,“注入”意味着将一些东西放入一种与每个 EJB bean 相关联的映射中。所谓的ENC(企业命名上下文)。

    您可以通过在 EJB 中从 InitialContext 请求“java:/comp”命名空间来访问此“映射”,或者直接从 EJB 上下文(您也必须注入)。

    这些天使用 ENC 似乎很少见。现场注入更方便。

    【讨论】:

    • 感谢您的回复。后续问题,如果无论如何都必须从 JNDI InitialContext 获取资源,那么声明基于类的 Resource 注释有什么意义?
    • 那样做的意义相对较小。它源自 XML 变体。有了它,您可以在(外部)XML 文件中声明放入给定 bean 的 ENC 中的内容。 @Resource 只是反映 XML。
    • 感谢您为我指明了正确的方向。我阅读了 ENC,现在我了解(我认为)API 应该如何工作,尽管我确实认为这种方式的 API 比它需要的更复杂。
    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2013-06-30
    相关资源
    最近更新 更多