2.4.4 MDB(WS-R)使用時のトランザクション
MDB(WS-R)の場合,サービスリクエスタからHCSCサーバの間,そしてサービスアダプタからサービス部品の間は,異なるトランザクションになります。
(1) 非同期のサービスアダプタへメッセージを送信する場合
非同期の標準受付(MDB(WS-R))でサービス部品呼び出し要求を受け付け,非同期のMDB(WS-R)アダプタへメッセージを送信する場合,標準受付(MDB(WS-R))でのローカルキューからのメッセージの取り出しとサービスアダプタでの転送キューへの送信は,1つのトランザクションで処理します。
転送キューへのメッセージ送信が失敗した場合や,指定したサービスアダプタが起動していない場合など,何らかのエラーが発生した場合は,トランザクションをロールバックします。
ロールバックすると,標準受付(MDB(WS-R))で取り出したメッセージが復元され,再度ローカルキューからメッセージを取り出して,サービス部品を呼び出します。受付からサービス部品呼び出しまでが非同期の場合のトランザクションについて次の図に示します。
|
エラーが発生したときの対処方法については,マニュアル「サービスプラットフォーム システム構築・運用ガイド」の「7.7.3 MDB(WS-R)実行時の障害対策」を参照してください。
(2) 同期のサービスアダプタへメッセージを送信する場合
非同期(MDB(WS-R))の標準受付でサービス部品呼び出し要求を受け付け,同期のサービスアダプタへメッセージを送信する場合,標準受付(MDB(WS-R))でのローカルキューからのメッセージの取り出しからサービスアダプタでのサービス部品呼び出し,および応答が返ってきて応答用のキューへメッセージを送信するまでを,1つのトランザクションで処理します。
転送キューへのメッセージの送信が失敗した場合や,指定したサービスアダプタが起動していない場合,応答用のキューへのメッセージ送信が失敗した場合など,何らかのエラーが発生した場合は,トランザクションをロールバックします。ロールバックすると,標準受付(MDB(WS-R))で取り出したメッセージが復元され,再度ローカルキューからメッセージを取り出して,サービス部品を呼び出します。受付が非同期であるがサービス部品が同期の場合のトランザクションについて次の図に示します。
|
トランザクションが失敗すると,次のようになります。番号は,図中の番号と対応しています。
-
転送キューへのメッセージの送信が失敗した場合
サービスアダプタからSOAPでのサービス部品呼び出しが失敗すると,ローカルキューにメッセージが戻り,再度標準受付(MDB(WS-R))でメッセージを取り出します。
-
指定したサービスアダプタが起動していない場合
指定したサービスアダプタが起動していないと,ローカルキューにメッセージが戻り,再度標準受付(MDB(WS-R))でメッセージを取り出します。
-
応答用のキューへのメッセージ送信が失敗した場合
応答が返ってきて応答用のキューへのメッセージ送信が失敗すると,ローカルキューにメッセージが戻り,再度標準受付(MDB(WS-R))でメッセージを取り出します。
エラーが発生したときの対処方法については,マニュアル「サービスプラットフォーム システム構築・運用ガイド」の「7.7.3 MDB(WS-R)実行時の障害対策」を参照してください。
ビジネスプロセスはBMT(Bean Managed Transaction)で動作します。ビジネスプロセス自体は新たなトランザクションで制御します。ビジネスプロセスを呼び出す場合は,ビジネスプロセスのサービス呼出アクティビティに定義したサービス部品呼び出し処理ごとに,新たなトランザクションで制御します。ビジネスプロセスを介した場合のトランザクションについて次の図に示します。
|
永続化するビジネスプロセスの場合,ビジネスプロセスを実行する過程でのトランザクションについては,「3.4 ビジネスプロセスのトランザクション」を参照してください。