Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 解説

[目次][用語][索引][前へ][次へ]

2.4.3 同期のサービス部品を呼び出す場合の応答電文の扱い

標準受付(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 応答を取り出す」を参照してください。