プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JTAアプリケーションの開発
12c (12.2.1.3.0)
E90356-04
目次へ移動
目次

前
次

9 Java Transaction APIとOracle WebLogicの拡張機能

Java Transaction API (JTA)およびOracleが提供するAPIの拡張機能について学習します。

JTA APIの概要

簡単な概要を使用してJTA APIについて学習します。WebLogic Serverでは、JavaアプリケーションのJava Transaction API (JTA)を実装するjavax.transactionパッケージとjavax.transaction.xaパッケージがサポートされています。

JTAの詳細は、Java Transaction API (JTA)仕様(http://www.oracle.com/technetwork/java/javaee/jta/index.html)を参照してください。javax.transactionインタフェースおよびjavax.transaction.xaインタフェースの詳細は、JTAのJavadocを参照してください。

JTAの構成要素は以下のとおりです。

  • アプリケーションからトランザクション境界を設定したり、トランザクションを管理したりするためのインタフェースであるjavax.transaction.UserTransaction。このインタフェースは、Javaクライアント・プログラムの一部として、またはEJB内でBean管理のトランザクションの一部として使用します。

  • トランザクション・マネージャがアプリケーションのトランザクションの境界を設定したり、トランザクションを管理したりするためのインタフェースであるjavax.transaction.TransactionManager。このインタフェースはコンテナ管理のトランザクションの一部としてEJBコンテナによって使用されます。このインタフェースでは、javax.transaction.Transactionインタフェースを使用して特定のトランザクションで処理が実行されます。

  • トランザクション・マネージャがアプリケーション・サーバーにステータスおよび同期の情報を提供するためのインタフェースであるjavax.transaction.Statusjavax.transaction.Synchronization。これらのインタフェースは、トランザクション・マネージャによってのみアクセスされ、アプリケーション・プログラムの一部として使用することはできません。

  • トランザクション・マネージャがXA準拠リソースのリソース・マネージャと連係するためのインタフェースであるjavax.transaction.xa.XAResource、およびトランザクション・マネージャがトランザクションの識別子を取り出すためのインタフェースであるjavax.transaction.xa.Xid。これらのインタフェースは、トランザクション・マネージャによってのみアクセスされ、アプリケーション・プログラムの一部として使用することはできません。

JTAに対するOracle WebLogicの拡張機能

Java Transactions APIの拡張機能は、JTAの仕様で実装の細かな部分がカバーされていないところや補足的な機能が必要なところで提供されます。

Oracle WebLogicでは、JTA仕様の解釈に基づいて以下の機能が提供されます。

  • クライアントが開始するトランザクション - JTAトランザクション・マネージャ・インタフェース(javax.transaction.TransactionManager)がJNDIを通じてクライアントやBeanプロバイダから利用可能になります。この機能により、クライアントや、Bean管理のトランザクションを利用するEJBでトランザクションをサスペンドしたり再開したりすることができます。

    注意:

    サスペンドされたトランザクションは、それがサスペンドされた同じサーバー・プロセスで再開する必要があります。

  • トランザクションのスコープ - トランザクションはクラスタとドメインの内部、およびクラスタとドメイン間で機能します。

  • 拡張されたjavax.transaction.TransactionSynchronizationRegistryのサポート - WebLogic Serverでは、java:comp/TransactionSynchronizationRegistryの標準名を使用して、JNDI内のTransactionSynchronizationRegistryオブジェクトをルックアップできるようになりました。Oracleでは、このサポートを拡張するため、2つのグローバルJNDI名(javax/transaction/TransactionSynchronizationRegistryweblogic/transaction/TransactionSynchronizationRegistry)を追加しました。http://docs.oracle.com/javaee/6/api/index.html?javax/transaction/TransactionSynchronizationRegistry.htmljavax.transaction.TransactionSynchronizationRegistryを参照してください。

Oracle WebLogicでは、JTAの拡張機能として以下のクラスとインタフェースが提供されます。

  • weblogic.transaction.RollbackException (javax.transaction.RollbackExceptionを拡張)

    このクラスでは、より包括的な例外情報で使用するためにロールバックの元々の理由が保持されます。

  • weblogic.transaction.TransactionManager (javax.transaction.TransactionManagerを拡張)

    WebLogic JTAトランザクション・マネージャ・オブジェクトでは、XAリソースが起動時にトランザクション・マネージャに対する登録を行ったり、登録を解除したりできるようにするこのインタフェースがサポートされています。このインタフェースを利用すると、トランザクションをサスペンド後に再開することもできます。

    このインタフェースには、以下のメソッドがあります。

    • registerStaticResourceregisterDynamicResource、およびunregisterResource

    • registerResource - (WebLogic Server 8.1で新しく追加されたメソッド)このメソッドでは、トランザクション・マネージャによるリソースの管理方法を指定するためのプロパティがサポートされています。

    • getTransaction

    • forceResumeおよびforceSuspend

    • begin

  • weblogic.transaction.Transaction (javax.transaction.Transactionを拡張)

    WebLogic JTAトランザクション・オブジェクトでは、ユーザーがトランザクション・プロパティを取得および設定できるようにするこのインタフェースがサポートされています。

    このインタフェースには、以下のメソッドがあります。

    • setNameおよびgetName

    • addPropertiessetPropertygetProperty、およびgetProperties

    • setRollbackReasonおよびgetRollbackReason

    • getHeuristicErrorMessage

    • getXIDおよびgetXid

    • getStatusAsString

    • getMillisSinceBegin

    • getTimeToLiveMillis

    • isTimedOut

  • weblogic.transaction.TransactionHelper

    このクラスを使用すると、現在のトランザクション・マネージャおよびトランザクションを取得できます。TxHelperのかわりに使用されます。

    このインタフェースには、以下の静的メソッドがあります。

    • getTransaction

    • getUserTransaction

    • getTransactionManager

  • weblogic.transaction.TxHelper (非推奨です。かわりにTransactionHelperを使用してください)

    このクラスを使用すると、現在のトランザクション・マネージャおよびトランザクションを取得できます。

    このインタフェースには、以下の静的メソッドがあります。

    • getTransactiongetUserTransactiongetTransactionManager

    • status2String

  • weblogic.transaction.XAResource (javax.transaction.xa.XAResourceを拡張)

    このクラスを使用すると、XAリソースをリストから削除できます。

    このインタフェースには、次のメソッドがあります。

    • getDelistFlag

  • weblogic.transaction.nonxa.NonXAResource

    このインタフェースを使用すると、javax.transaction.xa.XAResourceインタフェースをサポートしていないリソースを簡単にWebLogic Serverトランザクション・マネージャに統合できます。トランザクション・マネージャでは、非XAリソースが分散トランザクションに参加することを許可する、最後のエージェントによる2フェーズ・コミットの最適化のバリエーションがサポートされています。プロトコルは、非XAリソースに対して2フェーズ・コミットを発行し、その処理の結果を使用してトランザクションのコミットの決定を行います。

javax.transactionインタフェースおよびjavax.transaction.xaインタフェースに対するWebLogicの拡張機能の詳細は、Oracle WebLogic Server Java APIリファレンスweblogic.transactionパッケージのサマリーに関する項を参照してください。