Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編)
目次 索引 前ページ次ページ

第3章 クライアントアプリケーションの作成> 3.4 クライアントアプリケーションソースの作成(CurrentインタフェースのJava言語)> 3.4.2 ソースの作成

3.4.2.1 アプリケーションの構成

 グローバルトランザクション運用を行うためには、CORBAのクライアントアプリケーションの処理に加えて、CosTransactions.Current.commitメソッドなどのCurrentインタフェースを呼び出して、データベース連携サービスにトランザクション処理を依頼します。

 これらの処理を考慮したクライアントアプリケーションの構成について以下に示します。

初期化処理部

 クライアントアプリケーションをCORBAサービスに登録、およびトランザクションサービスの初期化を行います。

アプリケーション固有部

 アプリケーション固有の処理部。トランザクションの開始から終了までの流れを記述します。

トランザクション用ライブラリ

 データベース連携サービスが提供するクライアントアプリケーション用ライブラリを結合します。

 クライアントアプリケーションの基本形を以下に示します。

try{

    /* 初期化処理  */
                :
    orb = org.omg.CORBA.ORB.init(args, null);
                :
    /* ネーミングサービスのオブジェクトリファレンスの獲得 */
                :
    org.omg.CORBA.Object _tmpObj2 =
                   Orb.resolve_initial_references("NameService");
    Cos  =  org.omg.NamingContextExtHelper.narrow(_tmpObj2);                … 1
                :
    /* トランザクション依頼処理  */
    org.omg.CORBA.Object  _tmpObj1 =
                   Orb.resolve_initial_references("TransactionCurrent");
    Current  = org.omg.CosTransactions.CurrentHelper.narrow(_tmpObj1);   … 2
                :
    /*サーバアプリケーションのオブジェクトリファレンス獲得 */
    String NCid = new String("bankA::accountA");
    String NCkind = new String("");
    
    try {
        NameComponent nc = new NameComponent( NCid, NCkind );
        NameComponent NCo[] = { nc };
        Obj = Cos.resolve( NCo );
        target = accountAHelper.narrow( Obj );
    }

    Current.begin();                                                   … 3
                :
    obj->ope1(para);                                                   … 4

    Current.commit(rhuristic);                                         … 5
}
catch(CORBA.CORBAException e){
    Current.rollback();                                                … 6
}
  1. ネーミングサービスからサーバアプリケーションのオブジェクトリファレンスを獲得します。
  2. Currentインタフェースのオブジェクトリファレンスを獲得します。
  3. CosTransactions.Current.beginメソッドでトランザクションの開始を宣言します。
  4. サーバアプリケーションを呼び出します。
  5. サーバアプリケーションの復帰状態を確認して、トランザクションの状態を決定します。トランザクションを正常終了させる場合はCosTransactions.Current.commitメソッドでトランザクションをコミットさせます。
  6. 異常が発生した場合は、CosTransactions.Current.rollbackメソッドでトランザクションをロールバックさせます。

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED