コンポーネント管理トランザクションの使用

セッション Bean、サーブレット、またはアプリケーション・クライアント・コンポーネントに、コンポーネント管理トランザクションを使用させることができます。これにより、コンテナーにトランザクションを管理させるのではなく、独自のトランザクションを直接管理します。

このタスクについて

注: Entity Bean はトランザクションを管理できません (そのため、Bean 管理トランザクションを使用できません)。

Session Bean、サーブレット、またはアプリケーション・クライアント・コンポーネントがコンポーネント管理トランザクションを使用できるようにするには、以下のステップを実行します。

手順

  1. セッション Bean の場合、トランザクション・デプロイメント属性の構成で説明しているように、コンポーネントのデプロイメント記述子の「トランザクション・タイプ」属性を「Bean」に設定します。
  2. アプリケーション・クライアント・コンポーネントの場合、コンポーネントのデプロイメント記述子の「Allow JTA Demarcation」属性を、トランザクション・デプロイメント属性の構成で説明されているように設定し、トランザクション区分のサポートを有効にします。
  3. アクティブにトランザクションを管理するコンポーネント・コードを作成します。

    ステートフル・セッション Bean の場合、特定のメソッドで開始されたトランザクションを、そのメソッドの完了前に完了 (つまり、コミットまたはロールバック) する必要はありません。 このトランザクションは、例えば、同じメソッドに対する以降の呼び出しの際や、別のメソッド内でも、後から完了することができます。ただし、通常は、 同じメソッド呼び出し内でトランザクションが開始され、完了されるように、アプリケーションを組み立てることをお勧めします。 その方が、アプリケーションのデバッグおよび保守が単純になるためです。

    以下のコード抜粋は、トランザクション・コンテキストをカプセル化するオブジェクトを 取得するのに必要な標準的なコードであり、 以下のステップが含まれています。
    • java:comp/UserTransaction で検索を呼び出すことによって、javax.transaction.UserTransaction オブジェクトを 作成します。
    • 必要に応じて begincommit などのトランザクション・メソッドを使用することによって、UserTransaction オブジェクトを使用して トランザクションの境界を定めます。トランザクションを開始したアプリケーション・コンポーネントは、 commit メソッド または rollback メソッドのいずれかを起動して、そのトランザクションの完了も行う必要があります。
    . ..
    import javax.transaction.*;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    ...
        public float doSomething(long arg1)throws NamingException {
            InitialContext initCtx = new InitialContext();
            UserTransaction userTran = (UserTransaction)initCtx.lookup(
               "java:comp/UserTransaction");
            ...
            //Use userTran object to call transaction methods
            userTran.begin ();
            //Do transactional work
            ...
            userTran.commit ();
            ...
        }
        ...
    }

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjta_usebmt
ファイル名:tjta_usebmt.html