【问题标题】:With EJB 2.1, is declaring references to resources in ejb-jar.xml required?对于 EJB 2.1,是否需要在 ejb-jar.xml 中声明对资源的引用?
【发布时间】:2010-12-10 21:13:37
【问题描述】:

我正在使用带有很多 MDB 的 Weblogic 9.2。这些 MDB 访问 JDBC 数据源,并分别使用本地和外部 XAConnectionFactory 写入本地和外部管理的 JMS 目标。每个 MDB 划定一个容器管理的 JTA 事务,该事务应该分布在所有这些资源中。

以下是我的 ejb-jar.xml 的摘录,该 MDB 从名为“MyDestination”的本地队列消费并生成到名为“MyOtherDestination”的 IBM Websphere MQ 队列。这些逻辑名称链接到我的 weblogic-ejb-jar.xml 文件中的物理对象。

是否需要使用 标签将 ConnectionFactory 和 Queue 公开给 MDB? 如果需要,是 Weblogic 需要还是需要它是 J2EE 规范所要求的吗?以及为了什么目的?例如,是否需要支持 XA 事务性?

我已经意识到使用暴露给 MDB 命名上下文的名称将受管对象与我的 MDB 分离的好处。这是指定这些标签时唯一添加的值吗?换言之,是否可以仅使用 InitialContext 和对象的完全限定名称从我的 MDB 中引用这些对象?

<enterprise-bean>
    <message-driven>
        <ejb-name>MyMDB</ejb-name>
        <ejb-class>com.mycompany.MyMessageDrivenBean</ejb-class>
        <transaction-type>Container</transaction-type>
        <message-destination-type>javax.jms.Queue</message-destination>
        <message-destination-link>MyDestination</message-destination-link>
        <resource-ref>
            <res-ref-name>jms/myQCF</res-ref-name>
            <res-type>javax.jms.XAConnectionFactory</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
        <message-destination-ref>
            <message-destination-ref-name>jms/myOtherDestination</message-destination-ref-name>
            <message-destination-type>javax.jms.Queue</message-destination-type>
            <message-destination-usage>Produces</message-destination-usage>
            <message-destination-link>MyOtherDestination</message-destination-link>
        </message-destination-ref>
    </message-driven>
<enterprise-bean>

【问题讨论】:

  • 我澄清了我的问题。我对它是否可以工作不感兴趣。我想知道为什么有人会这样做。

标签: jakarta-ee weblogic ejb ibm-mq jta


【解决方案1】:

我翻了一天的Weblogic/J2EE文档,发布了上面的问题,果然不出所料,我马上就找到了我要找的文档。

至少我需要为远程 ConnectionFactory(在我的例子中是 IBM Websphere MQ)声明一个 ,以便在 JTA 事务中登记其连接。

添加远程目标的相应 是为了保持一致性,从 Weblogic 的角度来看,这里没有真正的增值。此外,在指定对本地管理的 Destinations、ConnectionFactory 和 Datasources 的引用时没有任何附加值。

来自Weblogic的FAQs: Integrating Remote JMS Providers

问。 JMS资源有什么优势 参考提供?

A. JMS 资源引用提供 以下优点:

  • 它们确保 servlet 和 EJB 应用程序的可移植性:它们可以用于 更改应用程序的 JMS 资源无需重新编译 应用程序的源代码。
  • 它们提供 JMS 连接、会话和 MessageProducer 对象
  • 它们为非 WebLogic JMS 提供自动事务登记 提供者。这需要 XA 支持 JMS 提供程序。如果资源 不使用参考,然后征用 一个非 WebLogic JMS 提供程序,具有 当前交易需要额外的 程序化步骤。

Enhanced J2EE Support for Using WebLogic JMS With EJBs and Servlets 描述了此功能的详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 2013-12-12
    • 2014-01-28
    • 2015-10-12
    • 2011-02-21
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多