2

多くの 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>
4

1 に答える 1

2

Weblogic / J2EEのドキュメントを1日かけて調べ、上記の質問を投稿したところ、予想どおり、探していたドキュメントにすぐに出くわしました。

少なくとも、リモートConnectionFactory(私の場合はIBM Websphere MQ)の<resource-ref>を宣言して、その接続をJTAトランザクションに参加させる必要があります。

リモート宛先に対応する<message-destination-ref>は一貫性を保つために追加されており、Weblogicの観点からはここに実際の付加価値はありません。さらに、ローカルで管理されている宛先、ConnectionFactory、およびデータソースへの参照を指定する場合、付加価値はありません。

WeblogicのFAQから:リモートJMSプロバイダーの統合

Q. JMSリソース参照にはどのような利点がありますか?

A. JMSリソース参照には、次の利点があります。

  • これらは、サーブレットおよびEJBアプリケーションの移植性を保証します。これらを使用して、アプリケーションのソースコードを再コンパイルせずにアプリケーションのJMSリソースを変更できます。
  • これらは、JMS接続、セッション、およびMessageProducerオブジェクトの自動プーリングを提供します。
  • これらは、WebLogic以外のJMSプロバイダーに自動トランザクション登録を提供します。これには、JMSプロバイダーでのXAサポートが必要です。リソース参照が使用されていない場合は、WebLogic以外のJMSプロバイダーを現在のトランザクションに参加させるには、追加のプログラム手順が必要です。

この機能の詳細については、EJBおよびサーブレットでWebLogicJMSを使用するための拡張J2EEサポートで説明されています。

于 2009-10-28T16:55:16.813 に答える