3.3.4 トランザクションの一時停止と再開

CORBAオブジェクトは、メソッド呼出し内のトランザクションの一時停止および再開に関する規則に厳密に従う必要があります。以下に、これらの規則と規則に違反した場合のエラーについて説明します。

CORBAオブジェクト・メソッドが実行を開始すると、トランザクションに関する状態は次の3つのいずれかになります:

  • クライアント・アプリケーションがトランザクションを開始しました。
    • 正当なサーバー・アプリケーションの動作: :メソッドの実行中にトランザクションを一時停止および再開します。
    • 不当なサーバー・アプリケーションの動作: トランザクションが一時停止状態のままメソッドから復帰します。つまり、一時停止が呼び出された場合、再開を呼び出さずにメソッドから復帰します。
    • エラー処理: 不当な動作が発生した場合、TPフレームワークはCORBA::TRANSACTION_ROLLEDBACK例外をクライアント・アプリケーションに生成し、トランザクションはOracle Tuxedoシステムによってロールバックされます。
  • システムがトランザクションを開始して、AUTOTRANまたはalwaysトランザクション・ポリシーの動作を実行します。

    ノート:

    操作呼出しを受信したときにトランザクションを自動的に開始する場合、各CORBAインタフェースに対して、AUTOTRANYesに設定します。AUTOTRANYesに設定しても、インタフェースがすでにトランザクション・モードにある場合は無効です。AUTOTRANの詳細は、『CORBAトランザクションの使用』を参照してください。
    • 正当なサーバーの動作: メソッドの実行中にトランザクションを一時停止および再開します。

      ノート:

      お薦めしません。メソッドがトランザクションを再開する前に、トランザクションがタイムアウトしたり、中断されたりする可能性があります。
    • 不当なサーバーの動作: トランザクションが一時停止状態のままメソッドから復帰します。つまり、一時停止が呼び出された場合、再開を呼び出さずにメソッドから復帰します。
    • エラー処理: 不当な動作が発生した場合、TPフレームワークはCORBA::OBJ_ADAPTER例外をクライアントに生成し、トランザクションがロールバックされます。CORBA::OBJ_ADAPTER例外は、クライアント・アプリケーションがトランザクションを初期化していないために発生します。したがって、クライアント・アプリケーションでは、トランザクション・エラーが発生することを予想していません。
  • CORBAオブジェクトは、実行を開始したときにトランザクションに関与していません。
    • 正当なサーバーの動作:
      • メソッドの実行中にトランザクションを開始してコミットします。
      • メソッドの実行中にトランザクションを開始してロールバックします。
      • メソッドの実行中にトランザクションを開始して一時停止します。
    • 不当なサーバーの動作: トランザクションを開始して、トランザクションがアクティブな状態でメソッドから復帰します。
    • エラー処理: 不当な動作が発生した場合、TPフレームワークはCORBA::OBJ_ADAPTER例外をクライアント・アプリケーションに生成し、トランザクションはOracle Tuxedoシステムによってロールバックされます。CORBA::OBJ_ADAPTER例外は、クライアント・アプリケーションがトランザクションを初期化していないために発生します。したがって、クライアント・アプリケーションでは、トランザクション・エラーが発生することを予想していません。