WebLogic JTA プログラマーズ ガイド
![]() |
![]() |
![]() |
![]() |
この章では、WebLogic Server システム向けのトランザクション対応アプリケーションを記述するために必要な情報を提供します。
WebLogic Server は、EJB アプリケーションと RMI アプリケーションのトランザクションをサポートするトランザクション サービスを備えています。WebLogic Server EJB コンテナでは、そのトランザクション サービスによって、Sun Microsystems 発行の EJB 仕様 2.0 で説明されているトランザクション サービスの実装が提供されます。
EJB と RMI のアプリケーションの場合、WebLogic Server では Java アプリケーションの Java Transaction API (JTA) を実装する Sun Microsystems の javax.transaction
パッケージおよび javax.transaction
.xa
パッケージも提供されます。JTA の詳細については、Sun Microsystems 発行の Java Transaction API (JTA) 仕様 1.0.1a を参照してください。トランザクションの境界を設定するためにアプリケーションで使用される UserTransaction
オブジェクトの詳細については、WebLogic Server の Javadoc を参照してください。
以降の節では、EJB と RMI のアプリケーションをサポートするトランザクション サービスの機能と制限について説明します。
軽量クライアントは、可用性が一定ではなく、管理のされていない、1 ユーザ対象のデスクトップ システムで動作します。デスクトップ システムは、使用されないときは所有者によって電源が落とされます。そのような管理されていない、1 ユーザ対象のデスクトップ システムでは、トランザクションの調整などのネットワーク機能を行うべきではありません。特に、管理されていないシステムには、サーバ リソースが関わるトランザクションにおいて、障害の影響を受けずに原子性、一貫性、隔離性、および持続性という ACID プロパティを維持するという役目を負わせるべきではありません。WebLogic Server のリモート クライアントは軽量クライアントです。
トランザクション サービスを利用すると、軽量クライアントでは委託コミットを実行できます。つまり、軽量クライアントでは、トランザクションの調整をサーバ マシン上のトランザクション マネージャにまかせてトランザクションを開始および終了することができるのです。クライアント アプリケーションは、ローカルのトランザクション サーバを必要としません。EJB クライアントまたは RMI クライアントで使用される UserTransaction
のリモート実装によって、トランザクション調整の実際の作業がサーバ上のトランザクション マネージャに委託されます。
アプレットなどのクライアントでは、JNDI を使用して UserTransaction
オブジェクトおよび TransactionManager
オブジェクトの参照を取得できます。クライアントでは、いずれかのオブジェクト参照を使用してトランザクションを開始できます。現在のスレッドの Transaction
オブジェクトを取得するには、クライアント プログラムは ((TransactionManager)tm).getTransaction()
メソッドを呼び出さなければなりません。
トランザクションの動作を管理すると、そのトランザクションに関わるすべてのトランザクション オブジェクトでトランザクション リクエストの処理が完了しない限り commit
が成功しないので、トランザクションの整合性が確保されます。トランザクション サービスでは、Open Group によって定義されているリクエストと応答のプロセス間通信モデルで提供されるものと同等のトランザクション動作の管理が提供されます。
WebLogic Server では、トランザクションはそのトランザクションを生成したクライアントによってのみ終了することができます。
注意 : クライアントは、別のオブジェクトのサービスを要求したサーバ オブジェクトの場合もあります。
WebLogic Server では、フラット トランザクション モデルが実装されています。ネスト トランザクションはサポートされていません。
トランザクション サービスは、さまざまなトランザクション処理のサーバ、インタフェース、プロトコル、および規格と以下のように関連しています。
WebLogic Server では、マルチスレッド トランザクション クライアントがサポートされています。クライアントでは、複数のスレッドで同時にトランザクション リクエストを行うことができます。
トランザクションのスコープは、そのトランザクションが実行される環境を表します。WebLogic Server では、スタンドアロン サーバでのトランザクション、クラスタ化されていないサーバ間でのトランザクション、ドメイン内のクラスタ化されたサーバ間でのトランザクション、およびドメイン間のトランザクションがサポートされています。ドメイン間のトランザクションがサポートされるようにするためには、関連するすべてのドメインに共通の資格をコンフィグレーションする必要があります。Administration Console オンライン ヘルプの「ドメイン間トランザクションに対するドメインのコンフィグレーション」を参照してください。
WebLogic Server EJB コンテナでは、WebLogic Server EJB アプリケーションでの以下の 2 種類のトランザクションをサポートするトランザクション サービスが提供されます。
UserTransaction
オブジェクトに対する明示的なメソッド呼び出しを行って、トランザクションの開始、コミット、およびロールバックを行います。UserTransaction
のメソッドの詳細については、オンラインの Javadoc を参照してください。EJB アプリケーションでのトランザクション管理の概要については、「トランザクションについて」の「WebLogic Server EJB アプリケーションのトランザクション」および「トランザクションのサンプル EJB コード」を参照してください。
WebLogic Server は、WebLogic Server RMI アプリケーションのトランザクションをサポートするトランザクション サービスを備えています。RMI アプリケーションでは、クライアント アプリケーションまたはサーバ アプリケーションが UserTransaction
オブジェクトに対する明示的なメソッド呼び出しを行って、トランザクションの開始、コミット、およびロールバックが行われます。
UserTransaction
のメソッドの詳細については、オンラインの Javadoc を参照してください。RMI アプリケーションでのトランザクション管理の概要については、「トランザクションについて」の「WebLogic Server RMI アプリケーションのトランザクション」および「トランザクションのサンプル RMI コード」を参照してください。
WebLogic Server では、Object Transaction Service (OTS) との相互運用をサポートするトランザクション サービスが提供されます。Java Transaction Service (JTS) 仕様を参照してください。このリリースでは、WebLogic Server は以下のシナリオで OTS と相互運用できます。
この場合、サーバ間 2PC トランザクションは介在を使用して完了します。開始側サーバは xid を作成し、トランザクションを対象サーバに伝播します。対象サーバは、自身をリソースとして開始側サーバに登録します。開始側サーバがトランザクションを完了させます (ラスト リソースの最適化はなし)。
クライアントが OTS クライアント API を介してサーバ上でトランザクションを開始します。その後、クライアントはこのトランザクションから xid を取得し、トランザクションがコミットするまでその xid をリクエストごとに伝播します。クライアントはトランザクションを開始しますが、すべてのコミット処理はサーバ上で行われます。
![]() ![]() |
![]() |
![]() |