通常、ルート・レベルのアプリケーション・モジュールは独自のトランザクションを処理します。アプリケーション・モジュールのAPIによって、ほとんどのアプリケーションで必要なトランザクションに対するすべての制御が提供されます。
ただし、アプリケーション・モジュールをEJBセッションBeanとしてデプロイする場合は、EJBコンテナによるトランザクションの管理を選択できます。これには次の2つの場合があります。
これら2つの場合には、コンテナ管理トランザクションのみを使用する必要があることに注意してください。通常は、Bean管理トランザクションの方が簡単で便利です。
注意: 特に、Business Component Browserを使用して、コンテナ管理トランザクションを使用するアプリケーション・モジュールをテストすることはできません。
ビジネス・コンポーネントをデプロイする際に、使用するトランザクション・タイプを選択できます。
ルート・レベル・アプリケーション・モジュールApplicationModule1が、もう1つのルート・レベル・アプリケーション・モジュールApplicationModule2をインスタンス化して使用するとします。ApplicationModule2がBean管理トランザクションを使用する場合、このアプリケーション・モジュールが実行するすべての処理はApplicationModule1とは別のトランザクションになります。ApplicationModule1でコミットされていない変更内容は、ApplicationModule2では認識されません。その逆も同様です。
ApplicationModule1とApplicationModule2でトランザクションを共有するには、ApplicationModule2でコンテナ管理トランザクションを使用する必要があります。これによって、ApplicationModule1からトランザクションを継承できます。
クライアントが、EJBサーバーと同一のJVMで稼働している場合(たとえば、クライアントが、ビジネス・コンポーネントと同じOracle Application Server 10gのインスタンスで稼働するJSPである場合)、ユーザーは、クライアントが直接インスタンス化したアプリケーション・モジュールでコンテナ管理トランザクションを使用することもできます。このとき、クライアントは、制御を完全に行うためにトランザクションの境界を設定することができます。
アプリケーション・モジュールをBMPセッションBeanとしてデプロイする場合、トランザクションを最初に開始し、ベース・クラスからgetApplicationModule().getTransaction().connectToDataSource()をコールする必要があります。こうしないとアプリケーション・モジュールがデータソースへ接続されないエラーが発生します。
Copyright © 1997, 2006, Oracle. All rights reserved.