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

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

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

 グローバルトランザクション運用を行うためには、EJBのクライアントアプリケーションの処理に加えて、javax.transaction.UserTransactionインタフェースを呼び出して、データベース連携サービスにトランザクション処理を依頼します。

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

初期化処理部

 JNDIを利用してUserTransactionインタフェースを獲得します。

アプリケーション固有部

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

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

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

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

/* 初期化処理  */
         : 

javax.transaction.UserTransaction ut = null;
javax.naming.Context ic = null;

// InitialContextの生成
try{               
    ic = new InitialContext(); ・・・ (1)
} catch( NamingException e ) {
    System.out.println( "error: new InitialContext()" );
    System.exit(1);
}

// UserTransactionの獲得
try {
    ut = (UserTransaction)ic.lookup("java:comp/UserTransaction");     ・・・ (2)
} catch( NamingException e ) {
    System.out.println( "error: lookup UserTransaction" );
    System.exit(1);
}

        ....

// beginの発行
try {
    ut.begin(); ・・・ (3)
} catch ( NotSupportedException e ) {
    System.out.println( "error: already associate transaction" );
    System.exit(1);
} catch ( SystemException e ) {
    System.out.println( "error: SystemException occurred" );
    System.exit(1);
}

// EJBサーバアプリケーション呼び出し
try {
    rc = EJBサーバアプリケーションを呼び出してください ・・・ (4)
} catch ( RemoteException e ) {
        ....
}

try {
    if ( rc == 0 ) {
        // commitの発行
        ut.commit(); ・・・ (5)
    } else {
        // rollbackの発行
        ut.rollback(); ・・・ (6)
    }
} catch ( RollbackException e ) {
    System.out.println( "error: transaction was rolledback" );
    System.exit(1);
} catch ( SystemException e ) {
    System.out.println( "error: SystemException occurred" );
    System.exit(1);
}
  1. JNDIを使用するためにInitialContextを生成します。
  2. UserTransactionインタフェースをJNDIから獲得します。
  3. javax.transaction.UserTransaction.beginメソッドでトランザクションの開始を宣言します。
  4. EJBサーバアプリケーションを呼び出します。なお、EJBアプリケーションの呼び出し方法の詳細については、“J2EE ユーザーズガイド”を参照してください。
  5. サーバアプリケーションの復帰状態を確認して、トランザクションの状態を決定します。トランザクションを正常終了させる場合はjavax.transaction.UserTransaction.commitメソッドでトランザクションをコミットさせます。
  6. 異常が発生した場合は、javax.transaction.UserTransaction.rollbackメソッドでトランザクションをロールバックさせます。


 JNDIの詳細については、“J2EEユーザーズガイド”を参照してください。

注) クライアントアプリケーション起動時に以下の環境変数プロパティを指定してください。プロパティに指定する文字列は大文字・小文字を区別します。

-Dcom.fujitsu.ObjectDirector.CORBA.GlobalTransactionMode=True
-Djava.naming.factory.initial=com.fujitsu.interstage.j2ee.jndi.InitialContextFactoryForClient


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

All Rights Reserved, Copyright (C) 富士通株式会社 2005