グローバルトランザクション運用を行うためには、CORBAのクライアントアプリケーションの処理に加えて、CosTransactions_Current_commitメソッドなどのCurrentインタフェースを呼び出して、データベース連携サービスにトランザクション処理を依頼します。
これらの処理を考慮したクライアントアプリケーションの構成について以下に示します。
■初期化処理部
クライアントアプリケーションをCORBAサービスに登録、およびトランザクションサービスの初期化を行います。
■アプリケーション固有部
アプリケーション固有の処理部です。トランザクションの開始から終了までの流れを記述します。
■トランザクション用ライブラリ
データベース連携サービスが提供するクライアントアプリケーション用ライブラリです。
クライアントアプリケーションの基本形を以下に示します。
/* 初期化処理 */ orb = CORBA_ORB_init(&argc, argv, FJ_OM_ORBid, &env); : obj = CosNaming_NamingContext_resolve(naming, name, &env); … (1) : /* トランザクション依頼処理 */ Current = CORBA_ORB_resolve_initial_references( orb, CORBA_ORB_ObjectId_TransactionCurrent, &env); … (2) CosTransactions_Current_begin(Current, &env); … (3) : mod_intf_ope1(obj, para, &env); … (4) : if (env._major != CORBA_NO_EXCEPTION) … (5) CosTransactions_Current_rollback(Current, &env); else CosTransactions_Current_commit(Current, CORBA_TRUE, &env); :
ネーミングサービスからサーバアプリケーションのオブジェクトリファレンスを獲得します。
Currentインタフェースのオブジェクトリファレンスを獲得します。
CosTransactions_Current_beginメソッドでトランザクションの開始を宣言します。
サーバアプリケーションを呼び出します。
サーバアプリケーションの復帰状態を確認して、トランザクションの状態を決定します。
トランザクションを正常終了する場合は、CosTransactions_Current_commitメソッドでトランザクションをコミットします。
トランザクションを異常終了する場合は、CosTransactions_Current_rollbackメソッドでトランザクションをロールバックします。