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

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

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

非同期(MDB(DBキュー))の標準受付は,非同期の要求電文の標準受付(MDB(DBキュー))で,基本的にサービス部品からの応答がない場合に使用します。しかし,非同期(MDB(DBキュー))の標準受付から同期のサービス部品(WebサービスまたはSessionBeanなど)やビジネスプロセスを要求した場合,同期のサービス部品から応答が返るときがあります。

そのため,HCSCサーバでは応答を応答用のキューに送信する手段を提供しています。

応答用のキューを利用するには,HCSCサーバの環境構築時にHCSCサーバ側に送信用共用キューを作成し,送信用共用キューに送信先のキュー名を指定しておきます。

サービスリクエスタから標準受付(MDB(DBキュー))に対してサービス部品の呼び出しを要求する場合,標準受付(MDB(DBキュー))のパラメタに作成した送信用共用キューのキュー名を指定すると,サービス部品からの応答が返ってきた際に指定されたキューにJMSメッセージが送信されます。

送信用共用キューからサービスリクエスタ側のDBキュー(受信用共用キュー)にメッセージが転送されるため,DBキュー(受信用共用キュー)からメッセージを取り出すことで,サービス部品からの応答電文を取得できます。

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

同期サービス部品を呼び出した場合の応答の扱いを次の図に示します。

図2-45 同期サービス部品を呼び出した場合の応答の扱い

[図データ]

応答用のキューへメッセージを出力するのは,次に示す場合です。

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

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

表2-7 応答用のキューへメッセージを出力するケース

項番 応答用のキューへ出力するケース 応答電文の有無
応答電文がある場合 応答電文がない場合 サービス部品からのユーザ定義例外の場合 ユーザ定義例外以外のエラーの場合
1 呼び出し先のサービス部品が同期サービス部品の場合(WebService,SessionBeanおよび汎用カスタムアダプタなど) ペイロードに応答電文を設定 ペイロードなしのメッセージ ペイロードに応答電文を設定 ×
2 呼び出し先のサービス部品が非同期サービス部品の場合
(MDB(WS-R)およびMDB(DBキュー)など)
× × ×
3 呼び出し先のサービス部品がビジネスプロセスの場合 ペイロードに応答電文を設定 ペイロードなしのメッセージ ペイロードに応答電文を設定 ×

(凡例)
×:メッセージを送信しません。
−:非同期のサービス部品からユーザ定義例外は存在しないため該当しません。

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

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

なお,MDB(WS-R)の場合のように,JMSプロパティを引き継ぐことはできません。サービス部品呼び出しの相関関係を対応づける場合は,ユーザ電文内に相関関係を示す情報を埋め込みます。