Jakarta ee 对于EJB2.1,是否需要声明对EJB-jar.xml中资源的引用?
我将WebLogic9.2与许多MDB一起使用。这些MDB分别使用本地和外部XAConnectionFactory访问JDBC数据源并写入本地和外部管理的JMS目标。每个MDB划分一个容器管理的JTA事务,该事务应该分布在所有这些资源中 下面是我的ejb-jar.xml中的一个摘录,用于一个MDB,它从一个名为“MyDestination”的本地队列进行消费,并生成一个名为“MyTherDestination”的IBM Websphere MQ队列。这些逻辑名称链接到我的weblogic-ejb-jar.xml文件中的物理对象 是否需要使用和标记向MDB公开ConnectionFactory和队列?如果需要,是Weblogic要求的还是J2EE规范要求的?为什么呢?例如,是否需要支持XA事务性 我已经意识到使用暴露于MDB命名上下文的名称将受管对象与MDB分离的好处。这是指定这些标记时唯一添加的值吗?换句话说,使用InitialContext和对象的完全限定名从我的MDB引用这些对象是否可以接受?Jakarta ee 对于EJB2.1,是否需要声明对EJB-jar.xml中资源的引用?,jakarta-ee,weblogic,ejb,ibm-mq,jta,Jakarta Ee,Weblogic,Ejb,Ibm Mq,Jta,我将WebLogic9.2与许多MDB一起使用。这些MDB分别使用本地和外部XAConnectionFactory访问JDBC数据源并写入本地和外部管理的JMS目标。每个MDB划分一个容器管理的JTA事务,该事务应该分布在所有这些资源中 下面是我的ejb-jar.xml中的一个摘录,用于一个MDB,它从一个名为“MyDestination”的本地队列进行消费,并生成一个名为“MyTherDestination”的IBM Websphere MQ队列。这些逻辑名称链接到我的weblogic-ejb
<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>
MyMDB
com.mycompany.MyMessageDrivenBean
容器
javax.jms.Queue
我的目的地
jms/myQCF
javax.jms.XAConnectionFactory
容器
jms/myOtherDestination
javax.jms.Queue
生产
我的目的地
我花了一天时间浏览Weblogic/J2EE文档,发布了上述问题,然后不出所料,我立即发现了我正在寻找的文档
至少我需要为远程连接工厂(在我的例子中是IBM Websphere MQ)声明一个连接,以便在JTA事务中登记其连接
为了保持一致性,添加了远程目的地的对应值,从Weblogic的角度来看,这里没有真正的附加值。此外,在指定对本地管理的目标、ConnectionFactory和数据源的引用时,没有任何附加值
来自Weblogic的:
Q.JMS资源有哪些优势
参考资料提供?
<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>
JMS资源引用提供了
以下优点:
- 它们确保了servlet和EJB应用程序的可移植性:可以使用它们 更改应用程序的JMS 资源,而不重新编译 应用程序的源代码
- 它们提供了JMS连接、会话和会话的自动池 MessageProducer对象
- 它们为非WebLogic JMS提供自动事务登记 提供商。这需要在中提供XA支持 JMS提供程序。如果资源 不使用引用,然后登记 具有 当前事务需要额外的 方案步骤
有关此功能的详细信息,请参见。我澄清了我的问题。我对它是否可行不感兴趣。我想知道为什么有人会这样或那样做。