EJB モジュールのコンテナー・トランザクションの定義

一部のコンテナー・トランザクション設定は、すべてのエンタープライズ Bean では使用できません。 さらに、一部メソッドは特定のトランザクション設定および Bean で使用できません。 これらのルールは、 EJB 1.1 および EJB 2.x 仕様を基にした「コンテナー・トランザクションの追加」ウィザードに実装されました。

コンテナー・トランザクションをエンタープライズ Bean へ追加する方法:

  1. J2EE パースペクティブの「プロジェクト・エクスプローラー」ビューで、 EJB プロジェクトのデプロイメント記述子を右マウス・ボタンでクリックして、 「アプリケーションから開く」 > 「デプロイメント記述子エディター」を選択し、デプロイメント記述子エディターを開く。
  2. エディターの「アセンブリー」ページで、「コンテナー・トランザクション」セクションの「 追加」をクリックする。
  3. 検出された Bean のリストから 1 つ以上のエンタープライズ Bean を選択する。
  4. 以下の選択項目の中からコンテナー・トランザクション・タイプを選択する。
    • サポート対象外」- トランザクション・コンテキストなしで Bean メソッドを呼び出すようコンテナーに指示します。トランザクション・コンテキストの内部からクライアントによって Bean メソッドが呼び出された場合、 コンテナーはトランザクションと現行のスレッドとのアソシエーションを中断してから、 エンタープライズ Bean のインスタンス上にメソッドを呼び出します。その後で、メソッド呼び出しが戻されると、コンテナーは中断したアソシエーションを再開します。 中断したトランザクション・コンテキストは、 この Bean メソッドによって使用されるエンタープライズ Bean オブジェクト、またはリソースには渡されません。
    • サポート対象」- クライアントがトランザクションの内部に Bean メソッドを呼び出した場合、トランザクション・コンテキストの内部にその Bean メソッドを呼び出すようコンテナーに指示します。 クライアントがトランザクション・コンテキストを使用せずに Bean メソッドを呼び出した場合、 コンテナーはトランザクション・コンテキストを使用せずに Bean メソッドを呼び出します。トランザクション・コンテキストは、この Bean メソッドによって使用される エンタープライズ Bean オブジェクトまたはリソースに渡されます。
    • 必要」- トランザクション・コンテキストの内部に Bean メソッドを呼び出すようコンテナーに指示します。 クライアントがトランザクション・コンテキストの内部から Bean メソッドを呼び出した場合、 コンテナーはクライアント・トランザクション・コンテキストの内部から Bean メソッドを呼び出します。 クライアントがトランザクション・コンテキストの外部から Bean メソッドを呼び出した場合、 コンテナーは新規トランザクション・コンテキストを作成して、そのコンテキストの内部から Bean メソッドを呼び出します。トランザクション・コンテキストは、この Bean メソッドによって使用される エンタープライズ Bean オブジェクトまたはリソースに渡されます。
    • 新しく必要」- クライアントが Bean メソッドをトランザクション・コンテキストの内部から呼び出すか外部から呼び出すかには関係なく、 常に新規トランザクション・コンテキストの内部に Bean メソッドを呼び出すようコンテナーに指示します。トランザクション・コンテキストは、この Bean メソッドによって使用される エンタープライズ Bean オブジェクトまたはリソースに渡されます。
    • 必須」- 常に、 クライアントに関連付けられているトランザクション・コンテキストの内部に Bean メソッドを呼び出すようコンテナーに指示します。 クライアントがトランザクション・コンテキストを使用せずに Bean メソッドを呼び出そうとした場合、 コンテナーは javax.jts.TransactiononRequiredException 例外をクライアントにスローします。トランザクション・コンテキストは、エンタープライズ Bean メソッドによってアクセスされる EJB オブジェクトまたはリソースに渡されます。これらのエンティティー Bean にアクセスする EJB クライアントは、 既存のトランザクションの内部からアクセスしなければなりません。他のエンタープライズ Bean に対しては、エンタープライズ Bean または Bean メソッドが「管理対象 Bean」の値を実装するか、 「必要」または「新規が必要」の値を使用しなければなりません。エンタープライズ Bean 以外の EJB クライアントに対しては、 クライアントが javax.transaction.UserTransaction インターフェースを使用して、 トランザクションを呼び出さなければなりません。
    • なし (Never)」- トランザクション・コンテキストなしで Bean メソッドを呼び出すようコンテナーに指示します。 クライアントがトランザクション・コンテキストの内部から Bean メソッドを呼び出した場合、 コンテナーは java.rmi.RemoteException 例外をスローします。クライアントがトランザクション・コンテキストの外部から Bean メソッドを呼び出した場合、 コンテナーは「サポート対象外」トランザクション属性が設定されている場合と同様の動作をします。 クライアントは、トランザクション・コンテキストなしでメソッドを呼び出さなければなりません。
  5. このリストから 1 つ以上のメソッド要素を選択する。
  6. 「終了」をクリックする。
コンテナー・トランザクションが追加され、「コンテナー・トランザクション」セクションで、コンテナー・トランザクション・タイプ別に表示されます。
コンテナー・トランザクションを定義した後、デプロイメント記述子エディターを使用してコンテナー・トランザクションを処理できます。
関連概念
EJB デプロイメント記述子エディター

フィードバック