| Oracle® Fusion Middleware Oracle WebLogic Server JTAのプログラミング 11g リリース1 (10.3.6) B61631-07 |
|
![]() 前 |
![]() 次 |
この章では、Java Transaction API (JTA)とOracleが提供するJTAの拡張機能について概説します。
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.Statusとjavax.transaction.Synchronization。これらのインタフェースは、トランザクション・マネージャによってのみアクセスされ、アプリケーション・プログラムの一部として使用することはできません。
トランザクション・マネージャがXA準拠リソースのリソース・マネージャと連係するためのインタフェースであるjavax.transaction.xa.XAResource、およびトランザクション・マネージャがトランザクションの識別子を取り出すためのインタフェースであるjavax.transaction.xa.Xid。これらのインタフェースは、トランザクション・マネージャによってのみアクセスされ、アプリケーション・プログラムの一部として使用することはできません。
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/TransactionSynchronizationRegistryとweblogic/transaction/TransactionSynchronizationRegistry)を追加しました。詳細は、javax.transaction.TransactionSynchronizationRegistry (http://docs.oracle.com/javaee/5/api/index.html?javax/transaction/TransactionSynchronizationRegistry.html)を参照してください。
Oracle WebLogicでは、JTAの拡張機能として以下のクラスとインタフェースが提供されます。
weblogic.transaction.RollbackException (javax.transaction.RollbackExceptionを拡張)
このクラスでは、より包括的な例外情報で使用するためにロールバックの元々の理由が保持されます。
weblogic.transaction.TransactionManager (javax.transaction.TransactionManagerを拡張)
WebLogic JTAトランザクション・マネージャ・オブジェクトでは、XAリソースが起動時にトランザクション・マネージャに対する登録を行ったり、登録を解除したりできるようにするこのインタフェースがサポートされています。このインタフェースを利用すると、トランザクションをサスペンド後に再開することもできます。
このインタフェースには、以下のメソッドがあります。
registerStaticResource、registerDynamicResource、およびunregisterResource
registerResource - (WebLogic Server 8.1で新しく追加されたメソッド)このメソッドでは、トランザクション・マネージャによるリソースの管理方法を指定するためのプロパティがサポートされています。
getTransaction
forceResumeおよびforceSuspend
begin
weblogic.transaction.Transaction (javax.transaction.Transactionを拡張)
WebLogic JTAトランザクション・オブジェクトでは、ユーザーがトランザクション・プロパティを取得および設定できるようにするこのインタフェースがサポートされています。
このインタフェースには、以下のメソッドがあります。
setNameおよびgetName
addProperties、setProperty、getProperty、およびgetProperties
setRollbackReasonおよびgetRollbackReason
getHeuristicErrorMessage
getXIDおよびgetXid
getStatusAsString
getMillisSinceBegin
getTimeToLiveMillis
isTimedOut
weblogic.transaction.TransactionHelper
このクラスを使用すると、現在のトランザクション・マネージャおよびトランザクションを取得できます。TxHelperのかわりに使用されます。
このインタフェースには、以下の静的メソッドがあります。
getTransaction
getUserTransaction
getTransactionManager
weblogic.transaction.TxHelper (非推奨です。かわりにTransactionHelperを使用してください)
このクラスを使用すると、現在のトランザクション・マネージャおよびトランザクションを取得できます。
このインタフェースには、以下の静的メソッドがあります。
getTransaction、getUserTransaction、getTransactionManager
status2String
weblogic.transaction.XAResource (javax.transaction.xa.XAResourceを拡張)
このクラスを使用すると、XAリソースをリストから削除できます。
このインタフェースには、次のメソッドがあります。
getDelistFlag
weblogic.transaction.nonxa.NonXAResource
このインタフェースを使用すると、javax.transaction.xa.XAResourceインタフェースをサポートしていないリソースを簡単にWebLogic Serverトランザクション・マネージャに統合できます。トランザクション・マネージャでは、非XAリソースが分散トランザクションに参加することを許可する、最後のエージェントによる2フェーズ・コミットの最適化のバリエーションがサポートされています。プロトコルは、非XAリソースに対して1フェーズ・コミットを発行し、その処理の結果を使用してトランザクションのコミットの決定を行います。
javax.transactionインタフェースおよびjavax.transaction.xaインタフェースに対するWebLogicの拡張機能の詳細は、Oracle WebLogic Server APIリファレンスのweblogic.transactionパッケージのサマリーに関する項を参照してください。