多くの MDB で Weblogic 9.2 を使用しています。これらの MDB は、JDBC DataSource にアクセスし、ローカルおよび外部の XAConnectionFactory をそれぞれ使用して、ローカルおよび外部で管理されている JMS 宛先の両方に書き込みます。各 MDB は、これらのすべてのリソース間で分散する必要があるコンテナ管理の JTA トランザクションの境界を定めます。
以下は、「MyDestination」という名前のローカル キューから消費し、「MyOtherDestination」という名前の IBM Websphere MQ キューに生成する MDB の ejb-jar.xml からの抜粋です。これらの論理名は、weblogic-ejb-jar.xml ファイル内の物理オブジェクトにリンクされています。
<resource-ref> タグと <message-destination-ref> タグを使用して 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>