ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanの開発
12c (12.1.2)
E48048-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

5 MDBのプログラミングと構成: 主な手順

この章では、EJB 3.0以前の型式のXML記述子を使用してMDBの動作を構成するためのMDB実装に関して、ステップごとの説明を表示されます。EJB 3.1のアノテーション・サンプルは、「トピックMDBサンプル」を参照してください。

MDBの主要デプロイメント要素の概要は、第11章「MDBのデプロイメント要素とアノテーション」を参照してください。トピックMDBの主要デプロイメント要素の概要は、第10章「JMSトピックを使用したMDBの構成とデプロイ」を参照してください。

この章では、次の項について説明します。

必須のJMS構成

次の項の手順は、次の適切なJMSコンポーネントへのアクセス権を持っているものと想定しています。

MDBクラスの作成とデプロイメント要素の構成

メッセージドリブンBeanを実装するには、次の手順を実行します。

  1. javax.ejb.MessageDrivenBeanインタフェースとjavax.jms.MessageListenerインタフェースの両方を実装するソース・ファイル(メッセージドリブンBeanクラス)を作成します。

    MDBクラスでは、以下のメソッドを定義する必要があります。

    • MDBの各新規インスタンス作成後にコンテナが呼び出す1つのejbCreate()メソッド。

    • EJBのコンテナがメッセージを受け取ったときに呼び出すonMessage()メソッドを1つ。このメソッドには、メッセージを処理するビジネス・ロジックが格納されます。

    • 環境について情報(特定のデプロイメント記述子の値)をBeanのインスタンスに提供するsetMessageDrivenContext{}メソッドを1つ。「メッセージドリブンBeanコンテキストの使用」を参照してください。

    • メッセージドリブンBeanインスタンスをフリー・プールから削除するejbRemove()メソッドを1つ。


    注意:

    大半のEJB 3.1アプリケーションは、単一のメソッドonMessage()を定義するjavax.jms.MessageListenerのみを実装します。


  2. 次の例のように、ejb-jar.xmlでMDBを宣言します。

    <ejb-jar>
        <enterprise-beans>
            <message-driven>
                <ejb-name>...</ejb-name>
                <ejb-class>...</ejb-class>
                <transaction-type>Container</transaction-type>
                <acknowledge-mode>auto_acknowledge</acknowledge-mode>
                <message-driven-destination>
                    <destination-type>javax.jms.Topic</destination-type>
                    <subscription-durability>Durable</subscription-durability>
                </message-driven-destination>
            </message-driven>
        </enterprise-beans>
        <assembly-descriptor>
            <container-transaction>
                <method>
                    <ejb-name>...</ejb-name>
                    <method-name>onMessage()</method-name>
                </method>
                <trans-attribute>Required</trans-attribute>
            </container-transaction>
        </assembly-descriptor>
    </ejb-jar>
    

    構成する主要な動作は以下のとおりです。

  3. weblogic-ejb-jar.xmlmessage-driven-descriptor要素でMDBのWebLogic固有の動作を構成します。例:

    <weblogic-ejb-jar>
        <weblogic-enterprise-bean>
            <ejb-name>exampleMessageDrivenA</ejb-name>
            <message-driven-descriptor>
                <pool>...</pool>
                <timer-descriptor>...</timer-descriptor>
                <destination-jndi-name>...</destination-jndi-name>
                <initial-context-factory>...</initial-context-factory>
                <provider-url>...</provider-url>
                <connection-factory-jndi-name>...</connection-factory-jndi-name>
                <jms-polling-interval-seconds>...</jms-polling-interval-seconds>
                <jms-client-id>...</jms-client-id>
                <generate-unique-jms-client-id>...</generate-unique-jms-client-id>
                <durable-subscription-deletion>...</durable-subscription-deletion>
                <max-messages-in-transaction>...</max-messages-in-transaction>
                <init-suspend-seconds>...</init-suspend-seconds>
                <max-suspend-seconds>...</max-suspend-seconds>
            </message-driven-descriptor>
        </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    

    構成する際の重要な要素は、宛先へのアクセス方法の指定です。通常、ベスト・プラクティスに従うアプリケーションでは、initial-context-factoryprovider-urlフィールドを指定する必要はありません。手順については、「宛先用のMDBの構成」を参照してください。

  4. 『Oracle WebLogic Server Enterprise JavaBeansバージョン2.1の開発』の「Javaソースのコンパイル」の手順に従い、MDBクラスをコンパイルして生成します。

  5. 『Oracle WebLogic Serverへのアプリケーションのデプロイ』の「アプリケーションおよびモジュールのデプロイメント準備」の手順に従い、BeanをWebLogic Serverにデプロイします。

    デプロイメント時にWebLogic ServerでMDBのJMS宛先を見つけることができない場合、デプロイメントは成功しますが、宛先が見つからなかったことを示すメッセージがWebLogic Serverから出力されます。その場合、MDBは、JMSキューへの接続が成功するまで、定期的に接続を試行します。詳細については、「クラスタ化MDBの移行とリカバリ」を参照してください。