![[z/OS]](../images/ngzos.gif)
WebSphere MQ をメッセージング・プロバイダーとして使用する ASF メッセージ駆動型 Bean のメッセージング・フロー
アプリケーション・サーバー機能 (ASF) は、JMS 仕様に対するオプションの ASF 拡張機能が組み込まれたメッセージング・プロバイダーとともに使用されます。z/OS® では、こうした拡張機能は WebSphere MQ メッセージング・プロバイダーによって実装されます。WebSphere® Application Server Version 7.0 からは、JCA は、従来の ASF テクノロジーに優先します。
WebSphere Application Server でのメッセージ駆動型 Bean に対する ASF サポートは、メッセージ・リスナー・サービスと呼ばれています。ASF メッセージ駆動型 Bean アプリケーション をインストールする際には、構成情報を メッセージ・リスナー・ポート として指定します。

- 非永続サブスクリプションを除くすべてのメッセージ・ソースの場合、メッセージ・リスナーは、制御領域 (CR) で実行します。すなわち、こうしたメッセージに対する コントローラー内での listen となります。
- 非永続サブスクリプションの場合、メッセージ・リスナーは、サーバント領域 (SR) で実行します。すなわちこうしたメッセージに対する サーバント内での listen となります。
コントローラー内での listen
以下の図は、メッセージ・リスナーがコントローラーで listen している場合の WebSphere MQ ASF メッセージング・フローを示しています。
z/OS WebSphere Application Server では、ASF は、メッセージ駆動型 Bean リスナーが CR 内にあって、作業が SR 内のメッセージ駆動型 Beanディスパッチャーに分散されるようなメッセージ駆動型処理をサポートします。パブリッシュ/サブスクライブの場合は、 各 SR に対して個別のサブスクリプションがあるのではなく、サーバー全体に対して 1 つのサブスクリプションを登録するリスナーが 1 つ あることに注意してください。

- メッセージが JMS 宛先 (図では WebSphere MQ キューとして示しています) に到着すると、リスナーがそのメッセージのコピーを受信します。リスナーはメッセージを宛先から削除 しません。
- リスナーは、メッセージのトランザクション・クラスを判断し、z/OS ワークロード管理 (WLM) を使用して、メッセージ・トークン (実際のメッセージではない) を SR に渡します。ワークロード管理 は、トランザクション・クラスに基づいて適切な SR を選択します。
- ディスパッチャーがメッセージ・トークンを使用してメッセージを受け取り、 メッセージ駆動型 Bean の onMessage メソッドに渡します。ディスパッチャーはメッセージを宛先から 削除します。
サーバント内での listen
以下の図は、メッセージ・リスナーがサーバント領域で listen している場合の WebSphere MQ ASF メッセージング・フローを示しています。
この図 で示されているのは、 メッセージ駆動型 Bean リスナーとメッセージ駆動型 Bean ディスパッチャーの両方 が同じ SR 内で稼働するという、特殊な形式の ASF メッセージ駆動型 Bean 処理です。WebSphere Application Server は、 非永続パブリッシュ/サブスクライブ・メッセージング用にこの構成を使用します。各 SR は それぞれ独自のサブスクリプションを登録するので、 同じパブリケーションの複数のコピー (つまり、 各 SR ごとに 1 つの同じパブリケーションのコピー) を 1 つのサーバーが受け取って処理する可能性があります。

- メッセージが宛先 (図では WebSphere MQ キューとして示しています) に到着すると、リスナーがそのメッセージのコピーを受信します。リスナーはメッセージを宛先から削除 しません。
- リスナーは、z/OS WLM を使用して同じ SR にメッセージ・トークンを戻す、CR 内のコードを 呼び出します。
- ディスパッチャーがメッセージ・トークンを使用してメッセージを受け取り、 メッセージ駆動型 Bean の onMessage メソッドに渡します。ディスパッチャーはメッセージを宛先から 削除します。