Hitachi

Cosminexus V11 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 同期サービス部品を呼び出した場合の応答の扱い

[図データ]

応答を取り出す方法については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「9.5.8 応答を取り出す」を参照してください。

同期サービス部品でも応答があるかどうかによって,次の表に示すように応答用のキューへメッセージを送信するかどうかが異なります。

なお,サービスリクエスタから応答用のキューのキュー名を指定していても,HCSCサーバ側に指定したキュー名のキューが作られていない場合は,応答用のキューにメッセージは送信できないため,サービス部品の呼び出し処理がエラーになります。

表2‒5 応答用のキューへメッセージを出力する場合

項番

応答用のキューへ出力する場合

応答電文の有無

応答電文がある場合

応答電文がない場合

サービス部品からのユーザ定義例外の場合

ユーザ定義例外以外のエラーの場合

1

呼び出し先のサービス部品が同期サービス部品の場合

(WebService,SessionBeanなど)

ペイロードに応答電文を設定して送信

ペイロードなしのメッセージを送信

ペイロードに応答電文を設定して送信

×

2

呼び出し先のサービス部品が非同期サービス部品の場合

(MDB(WS-R)およびMDB(DBキュー)など)

×

×

×

3

呼び出し先のサービス部品がビジネスプロセスの場合

ペイロードに応答電文を設定して送信

ペイロードなしのメッセージを送信

ペイロードに応答電文を設定して送信

×

(凡例)

×:メッセージを送信しません。

−:非同期のサービス部品からユーザ定義例外は存在しないため該当しません。

注※

エラーの情報はログおよびトレースに出力します。

サービスリクエスタからの要求で応答用のキューのキュー名を指定していない場合は,応答電文の内容は破棄されます(応答電文が破棄されると,KDEC00031-Wメッセージが出力されます)。

また,サービスリクエスタ側で相関関係を対応づけるために,サービスリクエスタが指定したJMSプロパティが引き継がれます。引き継がれるヘッダおよびプロパティの詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「9.5.8 応答を取り出す」を参照してください。