0

Oracle Service Busを使用してIBM Websphere MQからメッセージを取得しようとしています。OSB で「 XA 」接続ファクトリを有効にし、「 transaction required」チェック ボックスをオンにしました。しかし、「Same transaction For Response」チェックボックスをオンにすると、「pipelineException」が発生します。

この問題について知っている人はいますか?? 完全なプロセスを説明するガイドラインやドキュメントはありますか? (私が正しい方向に進んでいるかどうかはわかりません.)

4

1 に答える 1

1

OSB は、要求パイプラインと応答パイプラインが異なるスレッドを使用するように構築されています。スレッドが異なる場合、リクエスト パイプラインを実行しているスレッドは、リクエスト パイプラインの最後に到達するとすぐに完了します。weblogic によって応答パイプラインを実行するために、新しいスレッドが割り当てられます。

「Same transaction For Response」オプションは、リクエストとレスポンスのパイプラインが新しいスレッドではなく同じスレッドを使用する必要があることを意味します。

「Same transaction For Response」オプションは、非常に厳密なエラー監視がある場合 (主に同期の場合) に使用することになっています。例えば以下の流れの場合、

MQ クライアント > OSB アプリケーション <> HTTP バックエンド / 同期 JMS

それから、

  • (「Same transaction For Response」が有効になっていないシナリオで) - 同期バックエンドが応答を送信せず、例外がある場合
    、例外は OSB 応答
    パイプラインに伝搬されません。完了後の応答がどうであったかは問題ではありません。そのため、OSB はバックエンドで何も起こらなかったかのように処理を進めます。

  • (「Same transaction For Response」が有効になっているシナリオ) - 前のシナリオで述べたようにバックエンドがエラーをスローした場合、待機中のリクエスト スレッドがエラーをキャプチャし、例外が即時エラー ハンドラーにスローされます。それは見つけることができます。(ステージ エラー ハンドラ、プロキシ エラー ハンドラ、システム エラー ハンドラ - 同じ順序で)。

強調表示されたエラーが表示され、オプションが有効になっている場合、バックエンドから送信されたエラーであると思います。ダウンストリームから得た応答を確認し、それに応じて修正してください。

于 2015-06-30T09:50:04.723 に答える