Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 解説
標準受付(MDB(WS-R))は,非同期の要求電文用の標準受付で,基本的にサービス部品からの応答がない場合に使用します。しかし,非同期(MDB(WS-R))の標準受付から同期のサービス部品(WebサービスまたはSessionBeanなど)やビジネスプロセスを要求した場合,同期のサービス部品から応答が返ることがあります。そのため,HCSCサーバでは応答を応答用のキューに送信する手段を提供しています。
応答用のキューを利用するには,HCSCサーバの環境構築時にHCSCサーバ側に転送キュー(応答用のキュー)を作成し,転送キューにサービスリクエスタ側マシンのキュー間転送用Webアプリケーションの宛先アドレスおよび転送先キュー名を指定しておきます。
サービスリクエスタから標準受付(MDB(WS-R))に対してサービス部品の呼び出しを要求するとき,標準受付(MDB(WS-R))のパラメタに作成した転送キュー(応答用のキュー)のキュー名を指定すると,サービス部品からの応答が返ってきたときに,指定されたキューにJMSメッセージが送信されます。
転送キュー(応答用のキュー)に送信されたJMSメッセージは,サービスリクエスタ側のローカルキューに転送されるため,ローカルキューからメッセージを取り出すことで,サービスリクエスタは,サービス部品からの応答電文を取得できます。同期サービス部品を呼び出した場合の応答の扱いを次の図に示します。
図2-37 同期サービス部品を呼び出した場合の応答の扱い
応答を取り出す方法については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「8.5.8 応答を取り出す」を参照してください。
同期サービス部品でも応答があるかどうかによって,次の表に示すように応答用のキューへメッセージを送信するかどうかが異なります。
なお,サービスリクエスタから応答用のキューのキュー名を指定していても,HCSCサーバ側に指定したキュー名のキューが作られていない場合は,応答用のキューにメッセージは送信できないため,サービス部品の呼び出し処理がエラーになります。
表2-5 応答用のキューへメッセージを出力する場合
項番 | 応答用のキューへ出力する場合 | 応答電文の有無 | |||
---|---|---|---|---|---|
応答電文がある場合 | 応答電文がない場合 | サービス部品からのユーザ定義例外の場合 | ユーザ定義例外以外のエラーの場合 | ||
1 | 呼び出し先のサービス部品が同期サービス部品の場合 (WebService,SessionBeanなど) |
ペイロードに応答電文を設定して送信 | ペイロードなしのメッセージを送信 | ペイロードに応答電文を設定して送信 | ×※ |
2 | 呼び出し先のサービス部品が非同期サービス部品の場合 (MDB(WS-R)およびMDB(DBキュー)など) |
× | × | − | ×※ |
3 | 呼び出し先のサービス部品がビジネスプロセスの場合 | ペイロードに応答電文を設定して送信 | ペイロードなしのメッセージを送信 | ペイロードに応答電文を設定して送信 | ×※ |
サービスリクエスタからの要求で応答用のキューのキュー名を指定していない場合は,応答電文の内容は破棄されます(応答電文が破棄されると,KDEC00031-Wメッセージが出力されます)。
また,サービスリクエスタ側で相関関係を対応づけるために,サービスリクエスタが指定したJMSプロパティが引き継がれます。引き継がれるヘッダおよびプロパティの詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「8.5.8 応答を取り出す」を参照してください。
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.