![]() |
iPlanet Application Server 開発者ガイド |
第 8 章 EJB のトランザクション処理
この章では、EJB プログラミングモデルに組み込まれているトランザクションサポートについて説明します。この章には次の節があります。
トランザクションモデルを理解する
トランザクションモデルを理解する
EJB の主な利点の 1 つは、宣言型トランザクションに提供するサポートです。宣言型トランザクションモデルでは、配置時に属性と Bean が関連付けられます。トランザクションコンテキストの境界を定めて透過的に伝播させることは、属性値をベースにしたコンテナの役割です。また、コンテナには、トランザクションマネージャと連係して、トランザクション内のすべての関係要素に一貫した結論を参照させる役割もあります。宣言型トランザクションを使うと、プログラマはトランザクションの境界を定める作業をする必要がなくなります。宣言型トランザクションによって、潜在的に分散型で、さまざまなリソースを更新する複数のコンポーネントが、1 つのトランザクションを共有できるコンポーネントベースのアプリケーションを簡単に作成できるようになります。また、EJB 仕様書では、 javax.transactions.UserTransaction を使ったプログラマによるトランザクションの境界設定もサポートしています。UserTransaction オブジェクトを取得するには、JNDI 検索を実行する必要があります。
iPlanet Application Server のトランザクション用サポートを理解するには、グローバルトランザクションとローカルトランザクションの違いを理解しておく必要があります。グローバルトランザクションは、トランザクションマネージャによって管理および調整され、複数のデータベースやプロセスにまたがることができます。トランザクションマネージャは通常、XA プロトコルを使って Enterprise Information System (EIS) またはデータベースと対話します。ローカルトランザクションは、単一 EIS またはデータベースのみに固有であり、1 つのプロセス内に制限されます。ローカルトランザクションとグローバルトランザクションの両方とも、javax.transaction.UserTransaction インタフェースを使って境界が設定されます。クライアントはこのインタフェースを使う必要がありますが、内部的にローカルトランザクションは JDBC API で実装され、これによってグローバルトランザクションより高速で処理されます。
iPlanet Application Server はグローバルトランザクションモードまたはローカルトランザクションモードのどちらかで動作しますが、両方を混在させることはできません。
注 アプリケーションがグローバルトランザクションを使うには、対応する iPlanet Application Server Resource Manager を設定し、使用可能にします。詳細については、配置ツールのオンラインヘルプおよび『管理ガイド』を参照してください。
EJB 仕様書では、ネストとは対照的な単層型トランザクションのサポートを要求しています。このモデルでは、各トランザクションはシステムのほかのトランザクションから独立しており、依存していません。単層型トランザクション内では、現在のトランザクションが終了するまで同じスレッド内で別のトランザクションを開始できません。単層型トランザクションは、非常に普及したモデルであり、ほとんどの商用データベースでサポートされています。ネストされたトランザクションに対しては、より精細な制御が行われます。
EJB のトランザクション属性の指定
Bean のリモートインタフェースのトランザクション属性は、Bean 全体またはメソッドごとに指定します。属性を両方のレベルで指定すると、Bean 全体の値よりもメソッド固有の値が優先されます。制限に関する節で説明するように、無効な組み合わせがあるので、両レベルの属性を組み合わせるときは注意が必要です。トランザクションの属性は Bean の XML DD ファイルの一部として指定されます。詳細については、「EJB iPlanet Application Server XML DTD」を参照してください。
Bean 管理トランザクションの使用法
コンテナ管理のトランザクションの使用をお勧めしますが、アプリケーションの要件によっては、Bean 管理トランザクションの使用が必要になる場合があります。プログラムでのトランザクションの管理の詳細については、次の URL で、このインタフェースに関する Enterprise JavaBeans 仕様書バージョン 1.1 を参照してください。http://java.sun.com/products/ejb/javadoc-1.1/javax/ejb/EJBContext.html
Bean 管理トランザクションへのポインタを用意することができます。たとえば、状態のあるセッション Beans のためにトランザクションを開始する場合、Bean は非活性化されません (フェールオーバーが影響を受けるので、トランザクション前のステートを調べます)。ただし、状態のないセッション Beans のためにトランザクションを開始する場合は、メソッドが復帰するとトランザクションは一度ロールバックされます。
前へ 目次 索引 DocHome 次へ
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.
最新更新日 2002 年 3 月 6 日