WebSphere Application Server リスナー・ポート
WebSphere® Application Server にインストールされているメッセージ駆動型 Bean (MDB) アプリケーションは、リスナー・ポートを使用して IBM® MQ システム上のメッセージを処理することもできます。
リスナー・ポートは、 IBM MQ システムに到着するメッセージを検出し、それらを処理のために MDB に送信するために使用されます。 このトピックでは、リスナー・ポートが IBM MQ システムをモニターする方法について説明します。
MDB は、 onMessage() メソッドの内部から IBM MQ システムへの追加接続を行うこともできます。
これらの接続がクライアントの自動再接続を使用する方法の詳細については、EnterpriseJavaBeansとWebベースのアプリケーションを参照してください
- CONNECTIONNAMELIST および CCDTURL は制限付きでサポートされます
- CLIENTRECONNECTOPTIONS はサポートされていません
CONNECTIONNAMELIST プロパティー
リスナー・ポートは、 IBM MQへの接続時に JMS 接続プールを使用するため、接続プールの使用による影響を受けます。 詳しくはアクティベーションの仕様をご覧ください。
空き接続がなく、この接続ファクトリーから接続の最大数がまだ作成されていない場合、 IBM MQへの新規接続の作成を試行するために CONNECTIONNAMELIST プロパティーが使用されます。
CONNECTIONNAMELIST 内のすべての IBM MQ システムにアクセスできない場合、リスナー・ポートは停止します。
その後、リスナー・ポートはメッセージ・リスナー・サービスのカスタム・プロパティー RECOVERY.RETRY.INTERVAL で指定された期間待機してから、再接続を再試行します。
この再接続の試みでは、接続プール内に空き接続がないか検査されます。接続の試行の間に、空き接続が戻されていることがあるためです。 使用可能な接続がなければ、リスナー・ポートは以前と同じく CONNECTIONNAMELIST を使用します。
リスナー・ポートが IBM MQ システムに再接続されると、 Java EE 環境は必要なトランザクション・クリーンアップを実行してから、処理のために MDB へのメッセージ配信を再開します。
トランザクション・クリーンアップを正しく機能させるには、 Java EE 環境が、失敗したキュー・マネージャーのログにアクセスできる必要があります。
リスナー・ポートが XA トランザクションに参加するトランザクション MDB と共に使用されており、複数インスタンス・キュー・マネージャーに接続している場合、CONNECTIONNAMELIST にはアクティブとスタンバイ両方のキュー・マネージャー・インスタンスの項目が含まれている必要があります。
これは、 Java EE 環境がトランザクション・リカバリーを実行する必要がある場合、障害後に再接続するキュー・マネージャーに関係なく、環境がキュー・マネージャー・ログにアクセスできることを意味します。
トランザクション MDB がスタンドアロン・キュー・マネージャーで使用されている場合、アクティベーション・スペックが障害後に常に同じシステムで実行されている同じキュー・マネージャーに再接続するようにするには、 CONNECTIONNAMELIST プロパティーに単一の項目が含まれている必要があります。
CCDTURL プロパティー
リスナー・ポートは、開始時に、CCDT の最初の項目を使用して、 QMANAGER プロパティーで指定されたキュー・マネージャーへの接続を試行します。
リスナー・ポートがテーブル内の最初の項目を使用してキュー・マネージャーに接続できない場合、リスナー・ポートは 2 番目の項目に移動し、キュー・マネージャーへの接続が確立するか、テーブルの終わりに到達するまで、以降同様に移動します。
リスナー・ポートは、CCDT 内のどの項目を使用しても指定されたキュー・マネージャーに接続できない場合は停止します。
その後、リスナー・ポートはメッセージ・リスナー・サービスのカスタム・プロパティー RECOVERY.RETRY.INTERVAL で指定された期間待機してから、再接続を再試行します。
この再接続の試みは、以前と同じく、CCDT 内のすべての項目に対して実行されます。
リスナー・ポートは、実行されると、 IBM MQ システムからメッセージを取得し、処理のために MDB に配信します。
メッセージの処理中にキュー・マネージャーで障害が発生した場合、 Java EE 環境は障害を検出し、リスナー・ポートの再接続を試行します。 リスナー・ポートは、再接続を試行するとき、CCDT 内の情報を使用します。
リスナー・ポートは、CCDT 内のすべての項目を試してもキュー・マネージャーに接続できない場合、RECOVERY.RETRY.INTERVAL プロパティーに指定された期間待機してから、再試行します。
メッセージ・リスナー・サービスのプロパティー MAX.RECOVERY.RETRIES は、リスナー・ポートが停止され、手動による再始動が必要になるまでに試行される再接続の連続回数を定義します。
リスナー・ポートが IBM MQ システムに再接続されると、 Java EE 環境は必要なトランザクション・クリーンアップを実行してから、処理のために MDB へのメッセージ配信を再開します。
トランザクション・クリーンアップを正しく機能させるには、 Java EE 環境が、失敗したキュー・マネージャーのログにアクセスできる必要があります。
リスナー・ポートが XA トランザクションに参加するトランザクション MDB と共に使用されており、複数インスタンス・キュー・マネージャーに接続している場合、CCDT にはアクティブとスタンバイ両方のキュー・マネージャー・インスタンスの項目が含まれている必要があります。
これは、 Java EE 環境がトランザクション・リカバリーを実行する必要がある場合、障害後に再接続するキュー・マネージャーに関係なく、環境がキュー・マネージャー・ログにアクセスできることを意味します。
トランザクション MDB がスタンドアロン・キュー・マネージャーと共に使用されている場合、CCDT には単一の項目のみが含まれている必要があります。これは、リスナー・ポートが障害後に常に同じシステムで実行している同じキュー・マネージャーに確実に再接続するようにするためです。
同じアクティブ・キュー・マネージャーに接続が行われるように、リスナー・ポートで使用される CCDT の AFFINITY プロパティーにデフォルト値 PREFERRED が設定されていることを確認します。
CLIENTRECONNECTOPTIONS プロパティー
リスナー・ポートは、独自の再接続機能を提供します。 提供されている機能により、リスナー・ポートは、接続先のキュー・マネージャーに障害が発生した場合に、自動的に IBM MQ システムに再接続することができます。
このため、 IBM MQ classes for JMS によって提供される自動クライアント再接続機能はサポートされません。
Java EEで使用されるすべてのリスナー・ポートに対して、 CLIENTRECONNECTOPTIONS プロパティーを DISABLED に設定する必要があります。