クライアント・アプリケーションでのグローバル・トランザクション・サポート

Java EE プラットフォームでは、プログラマチックまたは宣言型のいずれかのトランザクション区分アプローチを使用して、ご使用のアプリケーション内のトランザクションを管理できます。

プログラマチック・アプローチはコンポーネント管理 (または Bean 管理) トランザクションで、宣言型トランザクション区分アプローチはコンテナー管理トランザクションです。

コンポーネント管理 (または Bean 管理) トランザクション

Java EE アプリケーションは、Java Transaction API (JTA) の javax.transaction.UserTransaction インターフェースを使用して、保護リソースへの一連の変更に対して、プログラマチックにトランザクション境界を定めます。 コンポーネント管理トランザクションは、サーブレットと EJB 環境の両方で使用できます。 EJB コンポーネントの場合、そのデプロイメント記述子内のトランザクション属性を、TX_BEAN_MANAGED に設定します。

通常、トランザクションは、UserTransaction.begin() 呼び出しから始まります。 アプリケーション・コンポーネントは、変更をコミットする準備が完了す ると、UserTransaction.commit() 呼び出しを実行して、変更を調整およびコミットします。アプリケーション・コンポーネントがトランザクションをロールバックしなければならない場合には、UserTransaction.rollback() を呼び出し、すべての変更をバックアウトします。以下に例を示します。

    // Get User Transaction
    javax.transaction.UserTransaction transaction =
    ejbcontext.getUserTransaction();

    // Start transaction
    transaction.begin();

    // Make changes to the protected resources.
    // For example, use the Java EE or JCA CCI Interaction interface
    // to submit changes to an EIS system(s)
    interaction.execute(interactionSpec, input, output);

    if (/* decide to commit */) {
    // commit the transaction
    transaction.commit();

    } else { /* decide to roll back */
    // rollback the transaction
    transaction.rollback();
    }

コンテナー管理トランザクション

コンテナー管理トランザクションは、EJB 環境でのみ使用可能です。EJB コンポーネントは、デプロイメント記述子 (TX_REQUIRED など) のトランザクション属性を通して、宣言的にコンテナー管理トランザクションを指定します。 コンテナー管理トランザクションは、EJB コンテナーによって管理されます。 コンテナーは、EJB コンポーネントの代わりに、適切なメソッド (開始、コミット、またはロールバックなど) を呼び出します。この 宣言型のアプローチは、EJB コンポーネントにおけるプログラミング呼び出しを単純化します。


フィードバック