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

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

手順

  1. Java™ EE パースペクティブの「エンタープライズ・エクスプローラー」ビューで、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. 「終了」をクリックします。

タスクの結果

コンテナー・トランザクションが追加され、「コンテナー・トランザクション」セクションで、コンテナー・トランザクション・タイプ別に表示されます。

次のタスク

コンテナー・トランザクションを定義した後、デプロイメント記述子エディターを使用してコンテナー・トランザクションを処理できます。

フィードバック