3.3.5 トランザクションに関する制約

Oracle Tuxedo CORBAトランザクションには、次の制約が適用されます:

  • Oracle TuxedoシステムのCORBAオブジェクトは、メソッド呼出しから復帰したときに、メソッドが呼び出されたときと同じトランザクション・コンテキストを持つ必要があります。
  • CORBAオブジェクトは、一度に1つのトランザクションにのみ関与できます。すでにトランザクションに関与しているオブジェクトを関与させようとする呼出しに対しては、CORBA::INVALID_TRANSACTION例外が返されます。
  • CORBAオブジェクトがトランザクションに関与している場合に、そのオブジェクトに対して非トランザクション型のリクエストが送信されると、CORBA::OBJ_ADAPTER例外が発生します。
  • アプリケーションは、Server::initialize()でトランザクションを開始した場合、メソッドから復帰する前にトランザクションをコミットまたはロールバックする必要があります。アプリケーションがトランザクションを開始していない場合、TPフレームワークはサーバーを停止します。この理由は、Server::initializeメソッドの終了後に制御をアプリケーションに戻す予測可能な方法がないからです。
  • CORBAオブジェクトがトランザクションに関与しており、transactionアクティブ化ポリシーが設定されている場合、かつメソッドに渡された理由コードがDR_TRANS_COMMITTINGまたはDR_TRANS_ABORTEDの場合、Tobj_ServantBase::deactivate_objectメソッドからはどのCORBAオブジェクトに対しても呼出しは行われません。こうした呼出しに対しては、CORBA::BAD_INV_ORDER例外が生成されます。