11.29.2 AUTOTRANが設定された別のトランザクションでのサービス呼出し

TPNOTRANフラグを設定して通信呼出しを行い、呼び出されたときにトランザクションが自動的に開始するようにサービスが設定されている場合、呼出し側プロセスと呼び出されたプロセスはどちらもトランザクション・モードになります。ただし、この2つは別々のトランザクションを構成します。この状況では、次の処理が行われます。

  • tpreturn()は、トランザクションのイニシエータの役割を果たします。つまり、トランザクションが自動的に開始されたサービスで、トランザクションを終了します。または、tpforward()によって終了するサービスでトランザクションが自動的に開始された場合、フォワード・チェーンの最後のサービスで発行されたtpreturn()呼出しが、トランザクションのイニシエータの役割を果たします。つまり、トランザクションを終了します。(例については、図11-1を参照してください。)
  • tpreturn()はトランザクション・モードなので、トランザクションの参加リソースの障害やトランザクション・タイムアウトなどの影響を受けます。その場合、エラー・メッセージが返されます。
  • 呼出し側のトランザクションの状態は、呼出し側に戻されるエラー・メッセージやアプリケーション障害の影響を受けません。
  • 呼出し側のトランザクションは、呼出し側が応答を待っている間にタイムアウトになることがあります。
  • 応答が必要ない場合、呼出し側のトランザクションは、通信呼出しによる影響を受けません。

図11-1 AUTOTRANが設定されたtpforward( )とtpreturn()のトランザクションでの役割


AUTOTRANが設定されたtpforward( )とtpreturn()のトランザクションでの役割の図