IBM MQ SOAP リスナー
IBM® MQ SOAP リスナーは、URI で宛先として指定されたキューから着信 SOAP 要求を読み取ります。 このリスナーは、要求メッセージの形式を検査してから、Web サービス・インフラストラクチャーを使用して Web サービスを呼び出します。 IBM MQ SOAP リスナーは、URI の応答宛先キューを使用して、Web サービスから応答またはエラーを返します。 IBM MQ レポートを応答キューに返します。
ここでリスナーという用語は、標準的な Web サービスの意味で使用されます。 これは、 runmqlsr コマンドによって呼び出される標準 IBM MQ リスナーとは異なります。
説明
Java SOAP リスナーは、Java クラスとして実装され、Axis 1.4 を使用してサービスを実行します。 .NET リスナーはコンソール・アプリケーションであり、 .NET Framework 1 または .NET Framework 2 のサービスを実行します。 .NET Framework 3 サービスの場合、 Microsoft Windows Communication Foundation (WCF) 用の IBM MQ カスタム・チャネルを使用します。
(DISABLED) に設定すれば、リスナーを終了できます。| Web サービス・インフラストラクチャー | UNIX および Linux® システム | Windows Java | Windows.NET |
|---|---|---|---|
| リスナーの開始 | startWMQJListener.sh | startWMQJListener.cmd | startWMQNListener.cmd |
| リスナーの停止 | endWMQJListener.sh | endWMQJListener.cmd | endWMQNListener.cmd |
| リスナー・サービスの定義 | defineWMQJListener.sh | defineWMQJListener.cmd | defineWMQNListener.cmd |
IBM MQ SOAP リスナーは、 endpointURL および soapAction フィールドを SOAP メッセージから SOAP インフラストラクチャーに渡します。 リスナーは Web サービス・インフラストラクチャーを介してサービスを呼び出し、応答を待ちます。 リスナーは、endpointURL および soapAction を検証しません。 フィールドは、SOAP クライアントによって設定された URI で提供されるデータから、 IBM MQ SOAP 送信側によって設定されます。
リスナーは、応答メッセージを作成して、要求メッセージ URI で提供された応答の宛先に送信します。 またリスナーは、要求メッセージのレポート・オプションに従って、相関 ID を応答メッセージに設定します。 リスナーは要求メッセージから有効期限、持続性、および優先順位の設定を返します。 また、リスナーはいくつかの環境でのレポート・メッセージをクライアントに返送します。
SOAP 要求に形式エラーがある場合、リスナーは応答宛先キューを使用してクライアントにレポート・メッセージを返します。 また、キュー・マネージャーは、レポートが要求されている場合に、応答宛先キューを使用してレポート・メッセージをクライアントに返します。 イベントの数に応じて、詳細なレポート・メッセージが応答キューに書き込まれます。
- 例外。
- メッセージ有効期限。
- 認識されない要求メッセージの形式。
- MQRFH2 ヘッダーの保全性検査の失敗。
- メイン・メッセージの本文の形式が
MQFMT_NONEでない。 - IBM MQ SOAP リスナーが要求を処理している間に、バックアウト/再試行のしきい値を超過しました。
IBM MQ SOAP 送信側は、 MQRO_EXCEPTION_WITH_FULL_DATA および MQRO_EXPIRATION_WITH_FULL_DATA レポート・オプションを設定します。 IBM MQ SOAP 送信側によって設定されたレポート・オプションの結果として、レポート・メッセージには発信元の要求メッセージ全体が含まれます。 IBM MQ SOAP 送信側は MQRO_DISCARD オプションも設定します。これにより、レポート・メッセージが返された後にメッセージが破棄されます。 レポート・オプションが要件を満たしていない場合、独自の送信側を作成して別の MQRO_EXCEPTION および MQRO_DISCARD レポート・オプションを使用してください。 MQRO_DISCARD を設定していない別の送信側によって SOAP 要求が送信される場合は、失敗したメッセージは送達不能キュー (DLQ) に書き込まれます。
リスナーがレポート・メッセージを生成して、レポートの送信処理中に失敗した場合は、そのレポート・メッセージは DLQ に送信されます。 DLQ ハンドラーがこれらのメッセージを正しく処理するようにしてください。
送達不能キューに書き込もうとしたときにエラーが発生すると、メッセージが IBM MQ エラー・ログに書き込まれます。 リスナーがさらにメッセージの処理を続行するかどうかは、メッセージの持続性およびトランザクション・オプションが選択されているかどうかにより異なります。 リスナーが 1 フェーズ・トランザクション・モードを実行し、非持続要求メッセージを処理している場合、元のメッセージは廃棄されます。 IBM MQ SOAP リスナーは実行を続行します。 要求メッセージが持続メッセージである場合、その要求メッセージは要求キューにバックアウトされ、リスナーは終了します。 要求キューは get-inhibited に設定され、偶発的にトリガーが再始動されないようにします。
必要なパラメーター
- URI プラットフォーム
- Web サービス・デプロイメントの URI 構文とパラメーターを参照してください。
- -?
- コマンドの使用法について説明しているヘルプ・テキストを印刷します。
オプション・パラメーター
- -a integrityOption
- integrityOption は、失敗した要求メッセージを送達不能キューに書き込むことができない場合の IBM MQ SOAP リスナーの動作を指定します。 integrityOption には、以下のいずれかの値を使用できます。
values:
- DefaultMsgIntegrity
- 非持続メッセージの場合、リスナーは警告メッセージを表示し、元のメッセージが破棄された状態で実行を継続します。 持続メッセージの場合、リスナーはエラー・メッセージを表示し、要求メッセージをバックアウトして要求キューに残し、終了します。 DefaultMsgIntegrityは、-aオプションが省略された場合、またはintegrityOptionが指定されなかった場合に適用される。
- LowMsgIntegrity
- 持続メッセージと非持続メッセージのどちらの場合も、リスナーは警告を表示して実行を継続し、メッセージを破棄します。
- HighMsgIntegrity
- 持続メッセージと非持続メッセージのどちらの場合も、リスナーはエラー・メッセージを表示し、要求メッセージをバックアウトして要求キューに残し、終了します。
- -d ミリ秒
- msecs は、いずれかのスレッドで要求メッセージが受信された場合に、 IBM MQ SOAP リスナーが活動状態を維持するミリ秒数を指定します。 msecs が -1 に設定されている場合、リスナーは無限に活動します。
- -i コンテキスト
- Context は、リスナーが識別コンテキストを渡すかどうかを指定します。 Context は以下の値をとります。
- passContext
- 元の要求メッセージの識別コンテキストを応答メッセージに設定します。 SOAP リスナーは、要求キューからのコンテキストの保存、およびそれを応答キューに渡すための権限があるかどうかを確認します。 確認は、コンテキストを保存する要求キューと、コンテキストを渡す応答キューのオープンの実行時に行います。 必要な権限がない場合や、MQOPEN 呼び出しが失敗する場合は、応答メッセージは処理されません。 応答メッセージは送達不能キューに書き込まれ、送達不能ヘッダーには失敗した MQOPEN からの戻りコードが入ります。 リスナーは、後続の着信メッセージの処理を通常どおり続行します。
- ownContext
- SOAP リスナーは、コンテキストを渡しません。 返されるコンテキストは、元の要求メッセージを作成したユーザー ID ではなく、リスナーが実行されているユーザー ID を反映します。
- -n numThreads
- numThreads は、 IBM MQ SOAP リスナー用に生成された始動スクリプト内のスレッドの数を指定します。 デフォルトは 10 です。 メッセージ・スループットが高い場合には、この数値を引き上げることを検討してください。
- -v
- -v は、外部コマンドからの詳細出力を設定します。 エラー・メッセージが必ず表示されます。 -v を使用すると、カスタマイズされたデプロイメント・スクリプトを作成するために調整可能なコマンドが出力されます。
- -w serviceDirectory
- serviceDirectory は、Web サービスが入っているディレクトリーです。
- -x トランザクション性
- transactionality は、リスナーのトランザクション制御のタイプを指定します。 transactionality は、以下の値のいずれか 1 つに設定できます。
- onePhase
- IBM MQ 1 フェーズ・サポートが使用されます。 処理中にシステム障害が起こった場合、要求メッセージはアプリケーションに再送達されます。 IBM MQ トランザクションは、応答メッセージが 1 回だけ書き込まれるようにします。
- twoPhase
- 2 フェーズ・サポートが使用されます。 サービスが適切に作成されていれば、コミットされるサービスの 1 回の実行の間に、メッセージは厳密に 1 回送信され、他のリソースと整合します。 このオプションはサーバー・バインディング接続にのみ適用されます。
- none
- トランザクションをサポートしません。 処理中にシステム障害が起きると、要求メッセージは永続メッセージであるとしても失われる可能性があります。 サービスは完了していた場合もあれば、完了していない場合もあり、応答、レポート、送達不能メッセージは、書き込み済みの場合もあれば、書き込み済みでない場合もあります。
.NET例
amqwSOAPNETlistener
-u "jms:/queue?destination=myQ&connectionFactory=()
&targetService=myService&initialContextFactory=com.ibm.mq.jms.Nojndi"
-w C:/wmqsoap/demos
-n 20
Java例
java com.ibm.mq.soap.transport.jms.SimpleJavaListener
-u "jms:/queue?destination=myQ&connectionFactory=()
&initialContextFactory=com.ibm.mq.jms.Nojndi"
-n 20
