Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanの開発 12c (12.1.2) E48048-01 |
|
前 |
次 |
この章では、EJB 3.0以前の型式のXML記述子を使用してMDBの動作を構成するためのMDB実装に関して、ステップごとの説明を表示されます。EJB 3.1のアノテーション・サンプルは、「トピックMDBサンプル」を参照してください。
MDBの主要デプロイメント要素の概要は、第11章「MDBのデプロイメント要素とアノテーション」を参照してください。トピックMDBの主要デプロイメント要素の概要は、第10章「JMSトピックを使用したMDBの構成とデプロイ」を参照してください。
この章では、次の項について説明します。
次の項の手順は、次の適切なJMSコンポーネントへのアクセス権を持っているものと想定しています。
JMS接続ファクトリ。
接続ファクトリは、トランザクションMDBをサポートするために、XAトランザクション(グローバルJTAトランザクション)に対応している必要があります。
デフォルトのWebLogic JMS MDB接続ファクトリはXAに対応しており、WebLogicクラスタ上で自動生成され、WebLogic JMS宛先から消費するMDBの大部分には十分です。WebLogic JMSのデフォルト接続ファクトリの詳細は、『Oracle WebLogic Server JMSリソースの管理』のデフォルト接続ファクトリの使用に関する項を参照してください。
カスタムWebLogic JMS接続ファクトリを作成する方法の手順は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのシステム・モジュールにおける接続ファクトリの作成に関する項を参照してください。
他のJMSプロバイダでは、デフォルトの動作と構成方法は異なります。Oracle以外のJMSプロバイダ接続ファクトリを使用する場合は、そのベンダー提供のドキュメントを参照してください。
JMS宛先
WebLogic JMS宛先の構成手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのメッセージングの構成に関する項を参照してください。
注意: JMSプロバイダがリモートのWebLogic Server JMSプロバイダか外部JMSプロバイダであり、「外部JMSサーバー・マッピングを使用するかどうか」でお薦めされているラッパー手法を使用する場合は、ローカルではないJMSコンポーネントを構成するだけでなく、ローカルのJNDIツリーで外部接続ファクトリと外部JMS宛先も構成する必要があります。 |
メッセージドリブンBeanを実装するには、次の手順を実行します。
javax.ejb.MessageDrivenBean
インタフェースとjavax.jms.MessageListener
インタフェースの両方を実装するソース・ファイル(メッセージドリブンBeanクラス)を作成します。
MDBクラスでは、以下のメソッドを定義する必要があります。
MDBの各新規インスタンス作成後にコンテナが呼び出す1つのejbCreate()
メソッド。
EJBのコンテナがメッセージを受け取ったときに呼び出すonMessage()
メソッドを1つ。このメソッドには、メッセージを処理するビジネス・ロジックが格納されます。
環境について情報(特定のデプロイメント記述子の値)をBeanのインスタンスに提供するsetMessageDrivenContext{}
メソッドを1つ。「メッセージドリブンBeanコンテキストの使用」を参照してください。
メッセージドリブンBeanインスタンスをフリー・プールから削除するejbRemove()
メソッドを1つ。
注意: 大半のEJB 3.1アプリケーションは、単一のメソッド |
次の例のように、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>
構成する主要な動作は以下のとおりです。
トランザクション管理戦略 - MDBのトランザクション管理戦略(transaction-type
要素)。手順については、「MDBのトランザクション管理戦略の構成」を参照してください。
宛先タイプ - MDBがリスニングする宛先のタイプ。詳細については、「宛先タイプの構成」を参照してください。
weblogic-ejb-jar.xml
のmessage-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-factory
やprovider-url
フィールドを指定する必要はありません。手順については、「宛先用のMDBの構成」を参照してください。
『Oracle WebLogic Server Enterprise JavaBeansバージョン2.1の開発』の「Javaソースのコンパイル」の手順に従い、MDBクラスをコンパイルして生成します。
『Oracle WebLogic Serverへのアプリケーションのデプロイ』の「アプリケーションおよびモジュールのデプロイメント準備」の手順に従い、BeanをWebLogic Serverにデプロイします。
デプロイメント時にWebLogic ServerでMDBのJMS宛先を見つけることができない場合、デプロイメントは成功しますが、宛先が見つからなかったことを示すメッセージがWebLogic Serverから出力されます。その場合、MDBは、JMSキューへの接続が成功するまで、定期的に接続を試行します。詳細については、「クラスタ化MDBの移行とリカバリ」を参照してください。