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) 富士通株式会社 2006