グローバルトランザクション運用を行うためには、CORBAのクライアントアプリケーションの処理に加えて、COSTRANSACTIONS-CURRENT-COMMITメソッドなどのCurrentインタフェースを呼び出して、データベース連携サービスにトランザクション処理を依頼します。
これらの処理を考慮したクライアントアプリケーションの構成について以下に示します。
■初期化処理部
クライアントアプリケーションをCORBAサービスに登録、およびトランザクションサービスの初期化を行います。
■アプリケーション固有部
アプリケーション固有の処理部です。トランザクションの開始から終了までの流れを記述します。
■トランザクション用ライブラリ
データベース連携サービスが提供するクライアントアプリケーション用ライブラリです。
クライアントアプリケーションの基本形を以下に示します。
MAIN. * 初期化処理 : CALL "CORBA-ORB-INIT" USING CURRENT-ARG-C CURRENT-ARG-V TRANSACTIONCURRENTID ENV ORB. : * サーバアプリケーションのオブジェクトリファレンス獲得 CALL "COSNAMING-NAMINGCONTEXT-RESOLVE" USING … (1) COS-NAMING NAME ENV OBJ. : * トランザクション依頼処理 MOVE FUNCTION LENG (CORBA-ORB-OBJECTID-TRANCURRENT) TO STRING-LENGTH. CALL "CORBA-STRING-SET" USING TRANSACTIONCURRENTID STRING-LENGTH CORBA-ORB-OBJECTID-TRANCURRENT. CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING … (2) ORB TRANSACTIONCURRENTID ENV TRANCURRENTOBJ. * トランザクション開始 CALL "COSTRANSACTIONS-CURRENT-BEGIN" USING … (3) TRANCURRENTOBJ ENV. * サーバアプリケーションのメソッド呼出し : CALL "MOD-INTF-OPE1" USING … (4) OBJ PARA ENV. : * トランザクション完了処理 EVALUATE TRUE WHEN CORBA-NO-EXCEPTION OF MAJOR OF ENV CALL "COSTRANSACTION-CURRENT-COMMIT" USING … (5) TRANCURRENTOBJ CORBA-TRUE ENV. WHEN CORBA-SYSTEM-EXCEPTION OF MAJOR OF ENV CALL "COSTRANSACTION-CURRENT-ROLLBACK" USING TRANCURRENTOBJ ENV.
ネーミングサービスからサーバアプリケーションのオブジェクトリファレンスを獲得します。
Currentインタフェースのオブジェクトリファレンスを獲得します。
COSTRANSACTIONS-CURRENT-BEGINメソッドでトランザクションの開始を宣言します。
サーバアプリケーションを呼び出します。
サーバアプリケーションの復帰状態を確認して、トランザクションの状態を決定します。トランザクションを正常終了する場合は、COSTRANSACTIONS-CURRENT-COMMITメソッドでトランザクションをコミットします。トランザクションを異常終了する場合は、COSTRANSACTIONS-CURRENT-ROLLBACKメソッドでトランザクションをロールバックします。