この章には次の項が含まれます:
メッセージドリブンBeanは、リクエストに対するレスポンスが即時である必要のない疎結合(非同期)のビジネス・ロジックを実装します。メッセージドリブンBeanは、JMSキューまたトピックからメッセージを受信し、そのメッセージの内容に基づいてビジネス・ロジックを実行します。それは、EJBとJMSの間の非同期インタフェースです。
メッセージドリブンBeanのインスタンスはすべて同じ機能であり、EJBコンテナはどのMDBインスタンスにもメッセージを割り当てることができます。コンテナは、それらのインスタンスをプールしてメッセージのストリームの並行処理を可能にします。
EJBコンテナは、必要に応じてBeanのインスタンスを作成し、JMSメッセージをインスタンスに渡すことによってメッセージドリブンBeanと直接対話します。コンテナは、デプロイメント時にBeanのインスタンスを作成し、メッセージのトラフィックに基づいて作動時にインスタンスを追加および削除できます。
MDBは、トピックとキューの両方で並行処理をサポートしています。トピックとキューの詳細は、「MDBとメッセージング・モデル」を参照してください
Oracle WebLogic Serverインスタンスでは、各MDBデプロイメントは1つ以上のMDBインスタンス・プール(フリー・プールともいう)を保持します。このプールは、現在リクエストを送信していないMDBインスタンスも保持します。フリー・プール内のMDBインスタンスの最大数は、max-beans-in-free-pool
属性の値、スレッド・プール内の利用可能なスレッド数、スレッド・プールの種類、およびその他の要因などによって制御されます。『Oracle WebLogic Serverのパフォーマンスのチューニング』のメッセージドリブンBeanのチューニングに関する項 を参照してください。
MDBデプロイメントに関連付けられたフリー・プールの数は、MDBデプロイメントが接続される宛先の種類に依存します。通常、MDBデプロイメントは、デプロイメントをホストする各Oracle WebLogic Serverインスタンス上で1つのフリー・プールに関連付けられます。ただし、デプロイメントをホストする各Oracle WebLogic Serverインスタンス上では、WebLogic JMS分散宛先に接続したMDBデプロイメントが分散宛先に関連付けられた各物理宛先に対して1つのフリー・プールを持つ場合があります。フリー・プールの数は、EJBコンテナによって自動的に決定されます。JMS宛先に関連付けられたMDBの場合、各MDBフリー・プールは常に1つのJMS接続に対応します。
キュー・ベースのJMSアプリケーション(ポイントツーポイント・モデル)では、各MDBインスタンスは単一の内部JMSセッションを作成し、MDBスレッドに対応します。
トピック・ベースのJMSアプリケーション(パブリッシュ/サブスクライブ・モデル)には単一のインスタンスが必要になり、複数のインスタンス間で単一のJMSセッションを共有するか、または各インスタンスに対してセッションを作成できます。これは、MDBアプリケーション設定、トピックの種類、ワークマネージャ、およびmax-beans-in-free-pool
設定によって指定されるメッセージ処理パターンに基づいて、MDBコンテナによって自動的に決定されます。JMSトピックを使用したMDBの構成とデプロイを参照してください。『Oracle WebLogic Serverのパフォーマンスのチューニング』のメッセージドリブンBeanのチューニングに関する項も参照してください。
非トランザクション・トピックMDBのデフォルト動作は、メッセージ処理のマルチスレッド化です。使用時には次のいくつかの制約があります。
外部(WebLogic以外の)トピックを使用して機能する非トランザクション・トピックMDB
WebLogic JMSトピックから消費し、WebLogic JMSの順序単位(UOO)の値を持つメッセージを処理する非トランザクション・トピックMDB
詳細は、「MDB同時実行性の制御」の注意を参照してください