我正在使用带有很多MDB的Weblogic 9.2。这些MDB访问JDBC DataSources并分别使用本地和外部XAConnectionFactorys写入本地和外部管理的JMS目标。每个MDB都划定一个容器管理的JTA事务,该事务应该在所有这些资源中分配。使用EJB 2.1时,是否声明了对ejb-jar.xml中资源的引用?
下面是MDB的ejb-jar.xml摘录,它从本地队列中调用“MyDestination”,并生成一个名为“MyOtherDestination”的IBM Websphere MQ Queue。这些逻辑名称链接到我的weblogic-ejb-jar.xml文件中的物理对象。
就是用<资源引用>和<消息目的地裁判>标签,露出连接工厂和队列的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>
你试过了吗? – skaffman 2009-10-28 14:13:36
我澄清了我的问题。我对它是否可以工作不感兴趣。我想知道为什么会这样或那样做。 – adgoudz 2009-10-28 15:39:43