Oracle® Fusion Middleware Oracle WebLogic ServerメッセージドリブンBeanのプログラミング 11g リリース1(10.3.3) B61425-01 |
|
前 |
次 |
この項では、MDBを実装する手順を段階的に説明します。MDBの主なデプロイメント要素については、「MDBのデプロイメント要素」を参照してください。
以下の節の手順は、以下のJMSコンポーネントが適切に作成されているものと想定しています。
JMS接続ファクトリ - XAをサポートするもの(MDBがトランザクション対応の場合)
デフォルトのWebLogic MDB接続ファクトリはXA対応です。デフォルトの接続ファクトリの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JMSの構成と管理』の「デフォルト接続ファクトリの使用」を参照してください。カスタムWebLogic Server JMS接続ファクトリの作成方法については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのシステム・モジュールでの接続ファクトリの作成に関する項を参照してください。
他のJMSプロバイダでは、デフォルトの動作と構成方法は異なります。Oracle以外のJMSプロバイダを使用する場合は、そのベンダー提供のマニュアルを参照してください。
JMS宛先
WebLogic JMS宛先の構成手順については、Oracle WebLogic Server管理コンソール・オンライン・ヘルプを参照してください。
注意: JMSプロバイダがリモートのWebLogic Server JMSプロバイダか外部JMSプロバイダであり、「ラッパーを使用するかどうか」で推奨されているラッパー手法を使用する場合は、ローカルではないJMSコンポーネントを構成するだけでなく、ローカルのJNDIツリーで外部接続ファクトリと外部JMS宛先も構成する必要があります。 |
メッセージドリブンBeanを実装するには、次の手順を実行します。
javax.ejb.MessageDrivenBean
インタフェースとjavax.jms.MessageListener
インタフェースの両方を実装するソース・ファイル(メッセージドリブンBeanクラス)を作成します。
MDBクラスでは、以下のメソッドを定義する必要があります。
コンテナがフリー・プールでメッセージドリブンBeanのインスタンスを作成するために使用するejbCreate()
メソッドを1つ。
EJBのコンテナがメッセージを受け取ったときに呼び出すonMessage()
メソッドを1つ。このメソッドには、メッセージを処理するビジネス・ロジックが格納されます。
環境について情報(特定のデプロイメント記述子の値)をBeanのインスタンスに提供するsetMessageDrivenContext{}
メソッドを1つ。MDBもこのコンテキストを使用してコンテナのサービスにアクセスします。「メッセージドリブンBeanコンテキストの使用」を参照してください。
メッセージドリブンBeanインスタンスをフリー・プールから削除するejbRemove()
メソッドを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>
構成する主な要素は、宛先へのアクセス方法を指定するものです。手順については、「宛先を考慮したMDBの構成」を参照してください。
『Oracle Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「Javaソースのコンパイル」の手順に従い、MDBクラスをコンパイルして生成します。
『Oracle Fusion Middleware Oracle WebLogic Serverへのアプリケーションのデプロイ』の「アプリケーションおよびモジュールのデプロイメント準備」の手順に従い、BeanをWebLogic Serverにデプロイします。
デプロイメント時にWebLogic ServerでMDBのJMS宛先を見つけることができない場合、デプロイメントは成功しますが、宛先が見つからなかったことを示すメッセージがWebLogic Serverから出力されます。その場合、MDBは、JMSキューへの接続が成功するまで、定期的に接続を試行します。詳細については、「クラスタリングされたMDBの移行とリカバリ」を参照してください。