| 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の移行とリカバリ」を参照してください。