WebLogic エンタープライズ JavaBeans バージョン 3.0 プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

EJB 3.0 メタデータ アノテーション リファレンス

以下の節では、EJB 3.0 メタデータ アノテーションに関するリファレンス情報を提供します。

 


EJB 3.0 アノテーションの概要

新しい EJB 3.0 プログラミング モデルでは、JDK 5.0 メタデータ アノテーション機能を使用して、アノテーション付き EJB 3.0 Bean ファイルを作成します。次に、WebLogic コンパイル ツール weblogic.appc (またはこれと同等の Ant タスク wlappc) を使用して Bean ファイルを Java クラス ファイルにコンパイルし、必要となる EJB インタフェースやデプロイメント記述子など、関連する EJB アーティファクトを生成します。

以降の節では、EJB Bean ファイルで指定できるメタデータ アノテーションのリファレンス情報を提供します。一部のアノテーションは javax.ejb パッケージに含まれています。つまり、EJB に固有のアノテーションです。それ以外のアノテーションは、より一般的で他の Java Platform, Enterprise Edition (Java EE) バージョン 5 コンポーネントでも使用するアノテーションです。したがって、javax.annotation などの一般的なパッケージに含まれています。

 


ステートレス Bean、ステートフル Bean、メッセージ駆動型 Bean のアノテーション

この節では、以下のアノテーションのリファレンス情報を提供します。

javax.ejb.ActivationConfigProperty

説明

対象 : すべて

操作環境でメッセージ駆動型 Bean をコンフィグレーションするために使用するプロパティを指定します。確認応答モード、メッセージ セレクタ、想定される送り先やエンドポイントのタイプなどの情報を含めることができます。

このアノテーションは、@javax.ejb.MessageDriven アノテーションの activationConfig 属性の値としてのみ使用します。

属性

表 A-1 javax.ejb.ActivationConfigProperty アノテーションの属性
名前
説明
データ型
必須/省略可能
propertyName
アクティブ化プロパティの名前を指定する。
文字列
必須
propertyValue
アクティブ化プロパティの値を指定する。
文字列
必須

javax.ejb.ApplicationException

説明

対象 : クラス

その例外がアプリケーション例外で、クライアント アプリケーションに直接 (ラップせずに) 報告することを指定します。

このアノテーションは、検査済みの例外と未検査の例外の両方に適用できます。

属性

表 A-2 javax.ejb.ApplicationException アノテーションの属性
名前
説明
データ型
必須/省略可能
rollback
Bean が EJB コンテナ内部で呼び出されている場合に、例外が送出されたらトランザクションをロールバックするかどうかを指定する。
この属性の有効な値は、true および false。デフォルト値は false で、その場合トランザクションはロールバックされない。
ブール
省略可能

javax.ejb.EJB

説明

対象 : クラス、メソッド、フィールド

EJB ビジネス インタフェースまはたホーム インタフェースへの依存性 (参照) を指定します。

他の EJB への依存性を指定するには、Bean のインスタンス変数に @EJB アノテーションを付けます。WebLogic Server では、アノテーションを付けた変数が、依存先の EJB への参照に基づいて自動的に初期化されます。これを「依存性注入」と呼びます。この初期化は、Bean の EJBContext が設定された後、Bean のビジネス メソッドが呼び出される前に発生します。

このアノテーションを Bean クラス内のセッター メソッドに付けることもできます。その場合、WebLogic Server はセッター メソッド自体を使用して依存性注入を実行します。この方法でインスタンス変数に依存性を注入することもできます。

このアノテーションをクラスに適用すると、Bean が実行時にルックアップする EJB が宣言されます。

変数またはセッター メソッドへの注入を使用する場合、WebLogic Server では、アノテーションを付けたインスタンス変数またはセッター メソッドのパラメータの名前またはデータ型に基づいて参照先の EJB の名前が判別されます。少しでも不明確な場合は、@EJB アノテーションの beanName 属性または mappedName 属性を使用して、依存先の EJB の名前を明示的に指定する必要があります。

属性

表 A-3 javax.ejb.EJB アノテーションの属性
名前
説明
データ型
必須/省略可能
name
環境内で参照先 EJB のルックアップに使用する名前を指定する。
この名前は、クラスおよびそのスーパークラスからなるデプロイメント ユニット内でユニークでなければならない。
文字列
省略可能
beanInterface
参照先 EJB のインタフェース タイプ (ビジネス インタフェースまたはホーム インタフェース) を指定する。
この属性のデフォルト値は Object.class
クラス
省略可能
beanName
参照先 EJB の名前を指定する。
この属性は、参照先 EJB の @Stateless または @Stateful アノテーションの name 要素 (デフォルトでは、参照先 Bean クラスの未修飾名) に対応する。
EJB JAR ファイル内の複数のセッション Bean が同じインタフェースを実装している場合は、各 Bean の名前をユニークにする必要があるため、この属性が非常に有用になる。
文字列
省略可能
mappedName
参照先 EJB のグローバル JNDI 名を指定する。
次に例を示します。
mappedName="bank.Account"
この場合は、WebLogic Server JNDI ツリー内にデプロイされている bank.Account というグローバル JNDI 名の参照先 EJB を指定している。

注意 : マッピングされた名前を使用する EJB は、移行できなくなる可能性がある。

文字列
省略可能
description
EJB 参照の説明。
文字列
省略可能

javax.ejb.EJBs

説明

対象 : クラス

@javax.ejb.EJB アノテーションの配列を指定します。

属性

表 A-4 javax.ejb.EJBs アノテーションの属性
名前
説明
データ型
必須/省略可能
value
@javax.ejb.EJB アノテーションの配列を指定する。
EJB[]
省略可能

javax.ejb.Init

説明

対象 : メソッド

Bean クラス内のメソッドと、適合する EJB 2.1 EJBHome または EJBLocalHome クライアント ビューの createMETHOD メソッドとの対応関係を指定します。

このアノテーションは、ステートフル セッション Bean (クラス レベルの @javax.ejb.Stateful アノテーションを付けた Bean) でのみ使用します。

@javax.ejb.Init アノテーションを付けたメソッドの戻り値の型は void でなければなりません。また、パラメータの型は、参照する createMETHOD メソッドのパラメータの型とまったく同じである必要があります。

@Init アノテーションが必要になるのは、Remote-Home または LocalHome インタフェースを提供するステートフル セッション Bean のみです。少しでも不明確な場合は、value 属性を使用して、Home または LocalHome インタフェースの適合する create メソッドの名前を指定する必要があります。

属性

表 A-5 javax.ejb.Init アノテーションの属性
名前
説明
データ型
必須/省略可能
value
対応する createMETHOD メソッドの名前を指定する。
この属性を指定する必要があるのは、@Init アノテーションを使用して、複数の create<METHOD> メソッドを含むステートフル セッション Bean の適合する Home インタフェースを関連付ける場合のみ。
文字列
省略可能

javax.ejb.Local

説明

対象 : クラス

セッション Bean のローカル インタフェースを指定します。ローカル インタフェースは、ビジネス ロジックをローカル クライアント (EJB と同じアプリケーションで動作しているクライアント) にエクスポーズします。ローカル クライアントから呼び出せるビジネス メソッドを定義する。

Bean クラスに複数のインタフェース (ただし以下のインタフェースを除く) が実装されている場合は、このアノテーションを指定する必要があります。

このアノテーションは、ステートレスまたはステートフル セッション Bean にのみ適用されます。

属性

表 A-6 javax.ejb.Local アノテーションの属性
名前
説明
データ型
必須/省略可能
value
ローカル インタフェースのリストをクラスの配列として指定する。
この属性を指定する必要があるのは、Bean クラスに複数のインタフェース (ただし以下のインタフェースを除く) が実装されている場合のみ。
  • java.io.Serializable
  • java.io.Externalizable
  • javax.ejb.*
Class[]
省略可能

javax.ejb.LocalHome

説明

対象 : クラス

Bean クラスのローカル ホーム インタフェースを指定します。

ローカル ホーム インタフェースは、ローカル クライアント (EJB と同じアプリケーションで動作するクライアント) から使用して、Bean のインスタンスを作成、削除、および (エンティティ Bean の場合は) 検索することができるメソッドを提供します。ローカル ホーム インタフェースには、特定の Bean インスタンスに固有ではないビジネス ロジックである「ホーム メソッド」もあります。

この属性は、ステートレスおよびステートフル セッション Bean にのみ適用されます。

通常、この属性は、EJB 3.0 Bean の適合する EJB 2.1 コンポーネント ビューを提供する予定がある場合にのみ指定します。このアノテーションは、EJB 2.1 API に記述されている Bean クラスにも使用できます。

属性

表 A-7 javax.ejb.LocalHome アノテーションの属性
名前
説明
データ型
必須/省略可能
value
ローカル ホーム クラスを指定する。
クラス
必須

javax.ejb.MessageDriven

説明

対象 : クラス

エンタープライズ JavaBean がメッセージ駆動型 Bean であることを指定します。

属性

表 A-8 javax.ejb.MessageDriven アノテーションの属性
名前
説明
データ型
必須/省略可能
name
このメッセージ駆動型 Bean の名前を指定する。
この属性を指定しない場合は、Bean クラスの未修飾名がデフォルト値になる。
文字列
省略可能
messageListenerInterface
Bean クラスのメッセージ リスナ インタフェースを指定する。
Bean クラスにメッセージ リスナ インタフェースが明示的に実装されていない場合や、Bean クラスに複数のインタフェース (ただし、java.io.Serializablejava.io.Externalizable、および javax.ejb パッケージ内のすべてのインタフェースを除く) が実装されている場合は、この属性を指定する必要がある。
この属性のデフォルト値は Object.class
クラス
省略可能
activationConfig
操作環境でのメッセージ駆動型 Bean のコンフィグレーションを指定する。確認応答モード、メッセージ セレクタ、想定される送り先やエンドポイントのタイプなどの情報を含めることができます。
アクティブ化コンフィグレーション情報 (プロパティ名や値) は、@javax.ejb.ActivationConfigProperty アノテーションの配列を使用して指定する。
ActivationConfigProperty[]
省略可能
mappedName
メッセージ駆動型 Bean をマッピングする製品固有の名前を指定する。
この属性を使用して、このメッセージ駆動型 Bean のメッセージ送り先の JNDI 名を指定することもできる。次に例を示します。
mappedName="my.Queue"
このメッセージ駆動型 Bean は、WebLogic Server JNDI ツリー内にデプロイされている my.Queue という JNDI 名の JMS キューに関連付けられる。

注意 : この属性を指定した場合は、そのメッセージ駆動型 Bean を移行できなくなる可能性がある。

文字列
省略可能
description
メッセージ駆動型 Bean の説明を指定する。
文字列
省略可能

javax.ejb.PostActivate

説明

対象 : メソッド

EJB コンテナが Bean インスタンスを再アクティブ化した直後に通知を受信するライフサイクル コールバック メソッドを指定します。

このアノテーションは、ステートフル セッション Bean にのみ適用されます。ステートフル セッション Bean インスタンスがパッシベーションされたときの会話状態は EJB コンテナによって自動的に保持されるため、ほとんどのステートフル セッション Bean ではこのアノテーションを指定する必要はありません。このアノテーション (およびこれと対をなす @PrePassivate) を使用する必要があるのは、ステートフル セッション Bean で開いておきたいリソースがあり、そのリソースを Bean インスタンスのパッシベーションの前に閉じ、Bean インスタンスのアクティブ化中に開きなおす必要がある場合のみです。

このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。

@PostActivate アノテーションを付けるメソッドは、以下の要件を満たす必要があります。

このアノテーションには、属性はありません。

javax.ejb.PrePassivate

説明

対象 : メソッド

EJB コンテナが Bean インスタンスをパッシベーションする直前に通知を受信するライフサイクル コールバック メソッドを指定します。

このアノテーションは、ステートフル セッション Bean にのみ適用されます。ステートフル セッション Bean インスタンスがパッシベーションされたときの会話状態は EJB コンテナによって自動的に保持されるため、ほとんどのステートフル セッション Bean ではこのアノテーションを指定する必要はありません。このアノテーション (およびこれと対をなす @PostActivate) を使用する必要があるのは、ステートフル セッション Bean で開いておきたいリソースがあり、そのリソースを Bean インスタンスのパッシベーションの前に閉じ、Bean インスタンスのアクティブ化中に開きなおす必要がある場合のみです。

このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。

@PrePassivate アノテーションを付けるメソッドは、以下の要件を満たす必要があります。

このアノテーションには、属性はありません。

javax.ejb.Remote

説明

対象 : クラス

セッション Bean のリモート インタフェースを指定します。リモート インタフェースはビジネス ロジックをリモート クライアント (EJB とは別のアプリケーションで動作するクライアント) にエクスポーズします。リモート クライアントから呼び出せるビジネス メソッドを定義する。

このアノテーションは、ステートレスまたはステートフル セッション Bean にのみ適用されます。

属性

表 A-9 javax.ejb.Remote アノテーションの属性
名前
説明
データ型
必須/省略可能
value
リモート インタフェースのリストをクラスの配列として指定する。
この属性を指定する必要があるのは、Bean クラスに複数のインタフェース (ただし以下のインタフェースを除く) が実装されている場合のみ。
  • java.io.Serializable
  • java.io.Externalizable
  • javax.ejb.*
Class[]
省略可能

javax.ejb.RemoteHome

説明

対象 : クラス

Bean クラスのリモート ホーム インタフェースを指定します。

リモート ホーム インタフェースは、リモート クライアント (EJB とは別のアプリケーションで動作するクライアント) で Bean のインスタンスを作成、削除、および検索するためのメソッドを提供します。

この属性は、ステートレスおよびステートフル セッション Bean にのみ適用されます。

通常、この属性は、EJB 3.0 Bean の適合する EJB 2.1 コンポーネント ビューを提供する予定がある場合にのみ指定します。このアノテーションは、EJB 2.1 API に記述されている Bean クラスにも使用できます。

属性

表 A-10 javax.ejb.RemoteHome アノテーションの属性
名前
説明
データ型
必須/省略可能
value
リモート ホーム クラスを指定する。
クラス
必須

javax.ejb.Remove

説明

対象 : メソッド

@javax.ejb.Remove アノテーションは、ステートフル セッション Bean の remove メソッドを指定するために使用します。

EJB コンテナは、そのメソッドが完了したときに、@javax.annotation.PreDestroy アノテーションが付いているメソッドがあればそれを呼び出してからステートフル セッション Bean を破棄します。

属性

表 A-11 javax.ejb.Remove アノテーションの属性
名前
説明
データ型
必須/省略可能
retainIfException
このアノテーションを付けたメソッドがアプリケーション例外で異常終了した場合には、ステートフル セッション Bean を削除しないことを指定する。
有効な値は、true および false。デフォルト値は false
ブール
省略可能

javax.ejb.Stateful

説明

対象 : クラス

エンタープライズ JavaBean がステートフル セッション Bean であることを指定します。

属性

表 A-12 javax.ejb.Stateful アノテーションの属性
名前
説明
データ型
必須/省略可能
name
このステートフル セッション Bean の名前を指定する。
この属性を指定しない場合は、Bean クラスの未修飾名がデフォルト値になる。
文字列
省略可能
mappedName
ステートフル セッション Bean をマッピングする製品固有の名前を指定する。
この属性を使用して、このステートフル セッション Bean の JNDI 名を指定することもできる。WebLogic Server では、Bean のグローバル JNDI 名を作成する際に mappedName 属性の値を使用する。具体的には、JNDI 名は次のようになる。
mappedName#name_of_businessInterface
name_of_businessInterface は、このセッション Bean のビジネス インタフェースの完全修飾名。
たとえば、ビジネス インタフェースの完全修飾名が com.CheckingAccount である場合に mappedName="bank" と指定すると、このビジネス インタフェースの JNDI 名は bank#com.CheckingAccount となる。

注意 : この属性を指定した場合は、そのステートフル セッション Bean を移行できなくなる可能性がある。

文字列
省略可能
description
ステートフル セッション Bean の説明。
文字列
省略可能

javax.ejb.Stateless

説明

対象 : クラス

エンタープライズ JavaBean がステートレス セッション Bean であることを指定します。

属性

表 A-13 javax.ejb.Stateless アノテーションの属性
名前
説明
データ型
必須/省略可能
name
このステートレス セッション Bean の名前を指定する。
この属性を指定しない場合は、Bean クラスの未修飾名がデフォルト値になる。
文字列
省略可能
mappedName
ステートレス セッション Bean をマッピングする製品固有の名前を指定する。
この属性を使用して、このステートレス セッション Bean の JNDI 名を指定することもできる。WebLogic Server では、Bean のグローバル JNDI 名を作成する際に mappedName 属性の値を使用する。具体的には、JNDI 名は次のようになる。
mappedName#name_of_businessInterface
name_of_businessInterface は、このセッション Bean のビジネス インタフェースの完全修飾名。
たとえば、ビジネス インタフェースの完全修飾名が com.CheckingAccount である場合に mappedName="bank" と指定すると、このビジネス インタフェースの JNDI 名は bank#com.CheckingAccount となる。

注意 : この属性を指定した場合は、そのステートレス セッション Bean を移行できなくなる可能性がある。

文字列
省略可能
description
ステートレス セッション Bean の説明。
文字列
省略可能

javax.ejb.Timeout

説明

対象 : メソッド

Bean クラスのタイムアウト メソッドを指定します。

このアノテーションは、Bean クラス内で EJB タイマー サービスを簡単にプログラミングするためのアノテーションです。EJB タイマー サービスは EJB コンテナによって提供されるサービスです。このサービスを使用すると、タイマー オブジェクトが期限切れになったときに発生するコールバックをスケジューリングするタイマーを作成できます。

EJB 3.0 より前のバージョンでタイマー サービスをプログラミングするには、Bean クラスに javax.ejb.TimedObject オブジェクトを実装する必要がありました。また、Bean クラスに ejbTimeout という名前のメソッドを含める必要もありました。EJB のバージョン 3.0 では、これらの要件が緩和されました。javax.ejb.TimedObject インタフェースを実装する必要はなくなり、@Timeout アノテーションを付けている限り、タイムアウト メソッドに任意の名前を付けることができるようになりました。ただし、必要であれば、3.0 より前の方法でタイマー サービスをプログラミングすることもできます。

詳細については、「EJB タイマー サービスのプログラミング」を参照してください。

このアノテーションには、属性はありません。

javax.ejb.TransactionAttribute

説明

対象 : クラス、メソッド

EJB コンテナが EJB ビジネス メソッドをトランザクション コンテキスト内で呼び出すかどうかを指定します。

警告 : このアノテーションを指定した場合は、@TransactionManagement アノテーションを使用して、コンテナ管理によるトランザクションの境界設定を指定する必要があります。

このアノテーションは、Bean クラスに指定することも、クラスの特定のメソッド (ビジネス インタフェースのメソッド) に指定することもできます。Bean クラスに指定した場合、アノテーションはそのクラスの該当するすべてのビジネス インタフェース メソッドに適用されます。特定のメソッドに指定した場合は、そのメソッドにのみ適用されます。このアノテーションをクラス レベルとメソッド レベルの両方で指定し、それらの値が食い違っている場合は、メソッド レベルの値が優先されます。

Bean クラスで @TransactionAttribute アノテーションを指定しない場合は、コンテナ管理によるトランザクションの境界設定が使用されます。トランザクション属性のセマンティクスは REQUIRED と見なされます。

属性

表 A-14 javax.ejb.TransactionAttribute アノテーションの属性
名前
説明
データ型
必須/省略可能
value
ビジネス メソッドの呼び出し時に、EJB コンテナがトランザクションの境界設定を管理する方法を指定する。
これらの値の詳細については、「コンテナ管理によるトランザクション要素」の表の trans-attribute 要素の説明を参照。
この属性の有効な値は以下のとおり。
  • TransactionAttributeType.MANDATORY
  • TransactionAttributeType.REQUIRED
  • TransactionAttributeType.REQUIRED_NEW
  • TransactionAttributeType.SUPPORTS
  • TransactionAttributeType.NOT_SUPPORTED
  • TransactionAttributeType.NEVER
デフォルト値は TransactionAttributeType.REQUIRED
TransactionAttributeType
省略可能

javax.ejb.TransactionManagement

説明

対象 : クラス

セッション Bean またはメッセージ駆動型 Bean のトランザクションの境界設定管理の種類を指定します。

トランザクションとは、ディスク上、メモリ内、またはデータベース内にあるアプリケーションの状態を変更する作業の 1 単位であり、一度開始されると最後まで完了するか、あるいは一切何も行われません。トランザクションは、EJB コンテナ、Bean のコード、またはクライアント コードによって境界設定 (開始され、コミットまたはロールバックで終わる) できます。このアノテーションは、トランザクションの境界設定を、EJB コンテナで管理するか、ユーザが記述した Bean コードで管理するかを指定します。

Bean クラスにこのアノテーションを指定しない場合、その Bean ではトランザクションの境界設定をコンテナで管理するものと見なされます。

トランザクションの詳細については、「トランザクションの設計と管理のオプション」を参照してください。

属性

表 A-15 javax.ejb.TransactionManagement アノテーションの属性
名前
説明
データ型
必須/省略可能
value
Bean クラスで使用するトランザクションの境界設定管理の種類を指定する。
この属性の有効な値は以下のとおり。
  • TransactionManagementType.CONTAINER
  • TransactionManagementType.BEAN
デフォルト値は TransactionManagementType.CONTAINER
TransacationManagementType
省略可能

 


インターセプタのコンフィグレーションに使用するアノテーション

この節では、以下のアノテーションのリファレンス情報を提供します。

javax.interceptor.AroundInvoke

説明

対象 : メソッド

Bean クラスまたはインターセプタ クラスのビジネス メソッド インターセプタを指定します。

@AroundInvoke アノテーションは、Bean クラスまたはインターセプタ クラス内の「1 つ」のメソッドにのみ付けることができます。なお、Bean クラスのビジネス メソッドに付けることはできません。

このアノテーションには、属性はありません。

javax.interceptor.ExcludeClassInterceptors

説明

対象 : メソッド

このアノテーションを付けたメソッドに対して、クラス レベルのインターセプタを呼び出さないことを指定します。このアノテーションでは、デフォルト インターセプタは除外されません。デフォルト インターセプタの呼び出しは、@ExcludeDefaultInterceptors アノテーションでのみ除外できます。

このアノテーションには、属性はありません。

javax.interceptor.ExcludeDefaultInterceptors

説明

対象 : クラス、メソッド

定義されているどのデフォルト インターセプタも呼び出さないことを指定します (デフォルト インターセプタは、EJB デプロイメント記述子でのみ指定できます。アノテーションでは指定できません)。

クラス レベルで定義した場合、デフォルト インターセプタは Bean のどのビジネス メソッドに対しても呼び出されません。メソッド レベルで定義した場合は、その特定のビジネス メソッドに対しては呼び出されませんが、それ以外の @ExludeDefaultInterceptors アノテーションが付いていないすべてのビジネス メソッドに対しては呼び出されます。

このアノテーションには、属性はありません。

javax.interceptor.Interceptors

説明

対象 : クラス、メソッド

Bean クラスまたはメソッドに関連付けるインターセプタ クラスを指定します。インターセプタ クラスは、Bean クラスとはまったく別のクラスです。インターセプタ クラスのメソッドは、Bean のビジネス メソッド呼び出しまたはライフサイクル イベントに呼応する形で呼び出されます。

インターセプタ クラスには、ビジネス インターセプタ メソッド (@javax.interceptor.AroundInvoke アノテーションを付けたメソッド) と、ライフサイクル コールバック メソッド (@javax.annotation.PostConstruct@javax.annotation.PreDestroy@javax.ejb.PostActivate、または @javax.ejb.PrePassivate アノテーションを付けたメソッド) の両方を含めることができます。

Bean クラスに対して定義できるインターセプタ クラスの数に制限はありません。複数のインターセプタ クラスを定義した場合は、そのアノテーション内に指定した順序で呼び出されます。

アノテーションをクラス レベルで指定した場合、インターセプタは EJB のすべてのビジネス メソッドに適用されます。メソッド レベルで指定した場合は、そのメソッドにのみ適用されます。同じインターセプタ クラスを、Bean クラスの複数のメソッドに指定することもできます。メソッド レベルのインターセプタは、デフォルトでは、適用されるすべてのインターセプタ (デフォルト インターセプタ、クラス レベルのインターセプタなど) の後に呼び出されます。

属性

表 A-16 javax.interceptor.Interceptors アノテーションの属性
名前
説明
データ型
必須/省略可能
value
インターセプタ クラスの配列を指定する。配列に複数のインターセプタ クラスを含める場合は、配列内で指定した順序によって呼び出しの順序が決まる。
Class[]
必須

 


エンティティ Bean との対話に使用するアノテーション

この節では、以下のアノテーションのリファレンス情報を提供します。

javax.persistence.PersistenceContext

説明

対象 : クラス、メソッド、フィールド

コンテナ管理の EntityManager 永続性コンテキストへの依存性を指定します。

このアノテーションは、3.0 エンティティ Bean と対話するために使用します。通常は EntityManager インスタンスへの依存性注入を実行します。

EntityManager インタフェースには、永続性コンテキストとの対話に使用するメソッドが定義されています。永続性コンテキストとは、エンティティ インスタンスのセットです。エンティティとは、軽量の永続ドメイン オブジェクトです。EntityManager API を使用すると、永続エンティティ インスタンスの作成や削除、主キーに基づくエンティティの検索、およびエンティティに対するクエリを実行できます。

属性

表 A-17 javax.pesistence.PersistenceContext アノテーションの属性
名前
説明
データ型
必須/省略可能
name
EntityManager とその永続性ユニットの名前 (セッション Bean またはメッセージ駆動型 Bean のコンテキスト内で使用する名前) を指定する。
この属性は、JNDI ルックアップを使用して EntityManager を取得する場合にのみ指定する。依存性注入を使用する場合は指定する必要はない。
文字列
省略可能
unitName
永続性ユニットの名前を指定する。
この属性の値として persistence.xml ファイル内の永続性ユニットと同じ名前を指定すると、EJB コンテナによって永続性ユニットが自動的にデプロイされ、その JNDI 名としてその永続性ユニット名が設定される。同様に、この属性を指定しない場合でも、永続性コンテキスト情報を注入する変数の名前を persistence.xml ファイル内の永続性ユニットの名前と同じにすれば、EJB コンテナによって永続性ユニットが自動的にデプロイされ、その JNDI 名が永続性ユニット名と同じになるように設定される。

注意 : persistence.xml ファイルは、EJB JAR ファイルの META-INF ディレクトリに格納されている XML ファイルで、エンティティ Bean で使用するデータベースと、EntityManager のデフォルトの動作を指定する。

参照するスコープ内に複数の永続性ユニットがある場合は、この属性を指定する必要がある。
文字列
省略可能
type
永続性コンテキストの存続期間を、1 つのトランザクションのスコープに限定するか、1 つのトランザクションのスコープを超えて延長させるかを指定する。
この属性の有効な値は以下のとおり。
  • PersistenceContextType.TRANSACTION
  • PersistenceContextType.EXTENDED
デフォルト値は PersistenceContextType.TRANSACTION
PersistenceContextType
省略可能

javax.persistence.PersistenceContexts

説明

対象 : クラス

@javax.persistence.PersistencContext アノテーションの配列を指定します。

属性

表 A-18 javax.pesistence.PersistenceContexts アノテーションの属性
名前
説明
データ型
必須/省略可能
value

@javax.persistence.PersistencContext アノテーションの配列を指定する。

PersistenceContext[]
必須

javax.persistence.PersistenceUnit

説明

対象 : クラス、メソッド、フィールド

EntityManagerFactory オブジェクトへの依存性を指定します。

このアノテーションは、3.0 エンティティ Bean と対話するために使用します。通常は、EntityManagerFactory への依存性注入を実行します。この EntityManagerFactory を使用して、1 つまたは複数の EntityManager インスタンスを作成できます。このアノテーションは @PersistenceContext アノテーションに似ていますが、EntityManager の作成や破棄を EJB コンテナに任せずユーザ自身が行うため、その存続期間をより細かく制御できる点が異なります。

EntityManager インタフェースには、永続性コンテキストとの対話に使用するメソッドが定義されています。永続性コンテキストとは、エンティティ インスタンスのセットです。エンティティとは、軽量の永続ドメイン オブジェクトです。EntityManager API を使用すると、永続エンティティ インスタンスの作成や削除、主キーに基づくエンティティの検索、およびエンティティに対するクエリを実行できます。

属性

表 A-19 javax.pesistence.PersistenceUnit アノテーションの属性
名前
説明
データ型
必須/省略可能
name
EntityManagerFactory の名前 (セッション Bean またはメッセージ駆動型 Bean のコンテキスト内で使用する名前) を指定する。
この属性は、依存性注入を使用する場合は指定する必要はない。JNDI も使用して情報をルックアップする場合にのみ指定する。
文字列
省略可能
unitName
persistence.xml ファイルに定義されている永続性ユニットの名前を参照する。このファイルは、EJB JAR ファイルの META-INF ディレクトリに格納されている XML ファイルで、エンティティ Bean で使用するデータベースと、EntityManager のデフォルトの動作を指定する。
この属性を設定した場合は、参照先の永続性ユニットが EJB コンテナによって自動的にデプロイされ、その JNDI 名としてその永続性ユニット名が設定される。同様に、この属性を指定しない場合でも、永続性コンテキスト情報を注入する変数の名前を persistence.xml ファイル内の永続性ユニットの名前と同じにすれば、EJB コンテナによって永続性ユニットが自動的にデプロイされ、その JNDI 名が永続性ユニット名と同じになるように設定される。
参照するスコープ内に複数の永続性ユニットがある場合にのみ、この属性を指定する必要がある。
文字列
省略可能

javax.persistence.PersistenceUnits

説明

対象 : クラス

@javax.persistence.PersistenceUnit アノテーションの配列を指定します。

属性

表 A-20 javax.pesistence.PersistenceUnits アノテーションの属性
名前
説明
データ型
必須/省略可能
value

@javax.persistence.PersistenceUnit アノテーションの配列を指定する。

PersistenceUnit[]
必須

 


EJB 3.0 で使用する標準 JDK アノテーション

この節では、以下のアノテーションのリファレンス情報を提供します。

javax.annotation.PostConstruct

説明

対象 : メソッド

依存性注入が完了した後、1 番目のビジネス メソッドを呼び出す前に、初期化を実行するために EJB コンテナから呼び出す必要のあるライフサイクル コールバック メソッドを指定します。

依存性注入を含むすべての Bean クラスには、@PostConstruct メソッドを指定できます。

このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。

@PostConstruct アノテーションを付けるメソッドは、以下の要件を満たす必要があります。

このアノテーションには、属性はありません。

javax.annotation.PreDestroy

説明

対象 : メソッド

EJB コンテナが Bean クラス インスタンスを破棄する直前に通知を受信するライフサイクル コールバック メソッドを指定します。通常、このアノテーションは、Bean クラスが保持しているリソースを解放するメソッドに適用します。

このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。

@PreDestroy アノテーションを付けるメソッドは、以下の要件を満たす必要があります。

このアノテーションには、属性はありません。

javax.annotation.Resource

説明

対象 : クラス、メソッド、フィールド

外部リソース (JDBC データ ソース、JMS 送り先、接続ファクトリなど) への依存性を指定します。

このアノテーションをフィールドまたはメソッドに指定すると、Bean の初期化時に、要求されたリソースのインスタンスが Bean に注入されます。このアノテーションをクラスに適用すると、Bean が実行時にルックアップするリソースが宣言されます。

属性

表 A-21 javax.annotation.Resource アノテーションの属性
名前
説明
データ型
必須/省略可能
name
リソース参照の名前を指定する。
@Resource アノテーションをフィールドに適用した場合は、クラス名で修飾されたフィールド名が name 属性のデフォルト値になる。メソッドに適用した場合は、そのメソッドに対応する JavaBean プロパティ名をクラス名で修飾した名前がデフォルト値になる。このアノテーションをクラスに適用した場合はデフォルト値がないため、この属性を指定する必要がある。
文字列
省略可能
type
リソースの Java データ型を指定する。
@Resource アノテーションをフィールドに適用した場合は、そのフィールドの型が type 属性のデフォルト値になる。メソッドに適用した場合は、JavaBean プロパティの型がデフォルトになる。クラスに適用した場合はデフォルト値がないため、この属性を指定する必要がある。
クラス
省略可能
authenticationType
このリソースに使用する認証タイプを指定する。
この属性は、サポートされるタイプの接続ファクトリを表すリソースにのみ指定する。
この属性の有効な値は以下のとおり。
  • AuthenticationType.CONTAINER
  • AuthenticationType.APPLICATION
デフォルト値は AuthenticationType.CONTAINER
AuthenticationType
省略可能
shareable
リソースを、この EJB と他の EJB との間で共有できるかどうかを指定する。
この属性は、サポートされるタイプの接続ファクトリまたは ORB オブジェクト インスタンスを表すリソースにのみ指定する。
この属性の有効な値は、true および false。デフォルト値は true
ブール
省略可能
mappedName
依存リソースのグローバル JNDI 名を指定する。
次に例を示します。
mappedName="my.Datasource"
この場合は、WebLogic Server JNDI ツリー内にデプロイされている my.Datasource というグローバル JNDI 名の依存リソースを指定している。
文字列
省略可能
description
リソースの説明を指定する。
文字列
省略可能

javax.annotation.Resources

説明

対象 : クラス

@Resource アノテーションの配列を指定します。

属性

表 A-22 javax.annotation.Resources アノテーションの属性
名前
説明
データ型
必須/省略可能
value
@Resource アノテーションの配列を指定する。
Resource[]
必須

 


EJB 3.0 で使用するセキュリティ関連の標準 JDK アノテーション

この節では、以下のアノテーションのリファレンス情報を提供します。

javax.annotation.security.DeclareRoles

説明

対象 : クラス

EJB で使用するセキュリティ ロールを定義します。

通常、このアノテーションは、アノテーションを付けたクラスのメソッド内から (たとえば isUserInRole メソッドを使用して) テストできるロールを定義するために使用します。また、クラスまたはクラスのメソッドで @RolesAllowed アノテーションを使用している場合はロールが暗黙的に宣言されますが、このアノテーションを使用することでそれらのロールを明示的に宣言できます。

セキュリティ ロールは、WebLogic Server で Administration Console を使用して作成できます。詳細については、「セキュリティ ロールの管理」を参照してください。

属性

表 A-23 javax.annotation.security.DeclareRoles アノテーションの属性
名前
説明
データ型
必須/省略可能
value
Bean クラス内で使用するセキュリティ ロールの配列を指定する。
文字列
必須

javax.annotation.security.DenyAll

説明

対象 : メソッド

このアノテーションを付けたメソッドへのアクセスを、どのセキュリティ ロールにも許可しないことを指定します。つまり、このメソッドは、EJB コンテナでの実行から除外されます。

このアノテーションには、属性はありません。

javax.annotation.security.PermitAll

説明

対象 : メソッド

このアノテーションを付けたメソッドへのアクセスを、WebLogic Server に定義されているすべてのセキュリティ ロールに許可することを指定します。

このアノテーションには、属性はありません。

javax.annotation.security.RolesAllowed

説明

対象 : クラス、メソッド

EJB 内のメソッドにアクセスできるセキュリティ ロールのリストを指定します。

クラス レベルで指定した場合は、Bean クラス内のすべてのメソッドに適用されます。メソッド レベルで指定した場合は、そのメソッドにのみ適用されます。このアノテーションをクラス レベルとメソッド レベルの両方で指定した場合は、クラス レベルの値がメソッド レベルの値によってオーバーライドされます。

セキュリティ ロールは、WebLogic Server で Administration Console を使用して作成できます。詳細については、「セキュリティ ロールの管理」を参照してください。

属性

表 A-24 javax.annotation.security.RolesAllowed アノテーションの属性
名前
説明
データ型
必須/省略可能
value
Bean クラスのメソッドにアクセスできるセキュリティ ロールのリストを指定する。
文字列
必須

javax.annotation.security.RunAs

説明

対象 : クラス

EJB コンテナ内で実際に EJB を実行するセキュリティ ロールを指定します。

指定するセキュリティ ロールは、WebLogic Server のセキュリティ レルム内に存在し、ユーザまたはグループにマッピングされている必要があります。詳細については、「セキュリティ ロールの管理」を参照してください。

属性

表 A-25 javax.annotation.security.RunAs アノテーションの属性
名前
説明
データ型
必須/省略可能
value
EJB をどのセキュリティ ロールとして実行するかを指定する。
文字列
必須

 


WebLogic Kodo アノテーション

この節では、以下の WebLogic Kodo アノテーションのリファレンス情報を提供します。

注意 : この節で説明するアノテーションは、それぞれに相当するコンフィグレーションが weblogic-ejb-jar.xml デプロイメント記述子で定義されている場合はオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

weblogic.javaee.AllowRemoveDuringTrasaction

説明

対象 : クラス (ステートフル セッション EJB のみ)

トランザクション中にインスタンスが削除できるかどうかを指定するフラグです。

注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の allow-remove-during-transaction 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

weblogic.javaee.CallByReference

説明

対象 : クラス (ステートフルまたはステートレス セッション EJB のみ)

EJB がリモートから呼び出されたか同じ EAR 内から呼び出されたかに関係なく、パラメータをコピーするかどうか (または参照によって渡すかどうか) を指定するフラグです。

注意 : メソッドのパラメータは、EJB がリモートで呼び出されたときには常に値で渡されます。

このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の enable-call-by-reference 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

weblogic.javaee.DisableWarnings

説明

対象 : クラス

ID を指定した警告メッセージを WebLogic Server が無効化するように指定します。

注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の disable-warning 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

属性

表 A-26 weblogic.javaee.DisableWarnings の属性 
名前
説明
データ型
必須/省略可能
WarningCode
警告コードを指定する。以下の 4 つの値のいずれかに設定する。
  • BEA-010001 - 警告メッセージ「EJB class loaded from system classpath during deployment.」を無効化する。
  • BEA-010054 - 警告メッセージ「EJB class loaded from system classpath during compilation.」を無効化する。
  • BEA-010200 - 警告メッセージ「EJB impl class contains a public static field, method or class.」を無効化する。
  • BEA-010202 - 警告メッセージ「Call-by-reference not enabled.」を無効化する。
String
必須

weblogic.javaee.EJBReference

説明

対象 : クラス、メソッド、フィールド

EJB 参照名を JNDI 名にマップします。

属性

表 A-27 weblogic.javaee.EJBReference アノテーションの属性
名前
説明
データ型
必須/省略可能
name
環境内で参照先 EJB のルックアップに使用する名前を指定する。
この名前は、クラスおよびそのスーパークラスからなるデプロイメント ユニット内でユニークでなければならない。
String
必須
jndiName
WebLogic Server で使用可能な実際の EJB、リソース、または参照の JNDI 名を指定する。
String
必須

weblogic.javaee.Idempotent

説明

対象 : クラス

同じメソッドを同じ引数で繰り返し呼び出しても、1 回の呼び出しと同じ効果がもたらされるように記述された EJB を指定します。これにより、フェイルオーバ ハンドラは、失敗したサーバ上で実際に呼び出しがコンパイルされるかどうかを知らなくても、失敗した呼び出しを再試行できるようになります。あるメソッドについて多重呼び出し不変を有効にした場合、EJB スタブは、EJB のホスト サーバに接続できるかぎり、あらゆる失敗から自動的に回復することができます。

注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の idempotent-method および retry-methods-on-rollback 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

属性

表 A-28 weblogic.javaee.Idempotent の属性 
名前
説明
データ型
必須/省略可能
retryOnRollbackCount
ロールバックされたコンテナ管理のトランザクションを自動的に再試行する回数。
この属性のデフォルトは 0。
int
省略可能

weblogic.javaee.JMSClientID

説明

対象 : メソッド

JMS 送り先に接続するときの MDB のクライアント ID を指定します。JMS トピックに対する恒久サブスクリプションで必須です。

weblogic.javaee.MessageDestinationConfiguration で MDB が使用する接続ファクトリを指定した場合、クライアント ID は config.xml 内の関連付けられている JMSConnectionFactory 要素の ClientID 要素で定義できます。

config.xmlJMSConnectionFactoryClientID を指定しないか、デフォルト接続ファクトリを使用する (weblogic.javaee.MessageDestinationConfiguration を指定しない) 場合、MDB は jms-client-id 値をそのクライアント ID として使用します。

注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の jms-client-id 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

属性

表 A-29 weblogic.javaee.JMSClientID の属性 
名前
説明
データ型
必須/省略可能
value
クライアント ID。
String
省略可能
generateUniqueID
MDB のすべてのインスタンスについて、EJB コンテナでユニークなクライアント ID を生成するかどうかを示すフラグ。このフラグを有効にすると、WebLogic Server クラスタ内の複数のサーバ インスタンスへの恒久 MDB のデプロイが容易になる。
Class
省略可能

weblogic.javaee.JNDIName

説明

対象 : クラス (ステートフルまたはステートレス セッション EJB のみ)

WebLogic Server で使用可能な実際の EJB、リソース、または参照の JNDI 名を指定します。リモート インタフェースが 1 つしかない場合、このアノテーションはリモート インタフェースおよび実装クラスで有効です。

注意 : JNDI 名を Bean に割り当てるのは推奨されません。グローバル JNDI 名は、クラスタ化されたサーバの起動時に大量のマルチキャスト トラフィックを引き起こします。『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「エンタープライズ JavaBean の実装」の「EJB リンクの使用」を参照してください。
注意 : EJB を含む EAR ライブラリがある場合、JNDI 名の衝突が起きるため、そのライブラリを参照するアプリケーションを複数デプロイすることはできません。これは、EAR ライブラリ内の個々の EJB に対してグローバル JNDI 名を設定できないからです。グローバル JNDI 名はライブラリ全体に対してのみ設定できます。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の jndi-name 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

属性

表 A-30 weblogic.javaee.JNDIName の属性 
名前
説明
データ型
必須/省略可能
value
JNDI 名。
String
必須。

weblogic.javaee.MessageDestinationConfiguration

説明

対象 : クラス (メッセージ駆動型 EJB のみ)

メッセージ駆動型 EJB がキューとトピックを作成するためにルックアップする JMS 接続ファクトリの JNDI 名を指定します。「送り先を考慮した MDB のコンフィグレーション」および「connection-factory-jndi-name の設定方法」を参照してください。

注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の connection-factory-jndi-name 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

属性

表 A-31 weblogic.javaee.MessageDestinationConfiguration の属性 
名前
説明
データ型
必須/省略可能
connectionFactoryJNDIName
接続ファクトリの JNDI 名。この属性のデフォルトは空文字列。
String
省略可能
initialContextFactory
WebLogic 初期コンテキスト ファクトリ。この属性のデフォルトは weblogic.jndi.WLInitialContextFactory.class
Class
省略可能
providerURL
プロバイダの URL。この属性のデフォルトは t3://localhost:7001
String
省略可能

weblogic.javaee.TransactionIsolation

説明

対象 : メソッド

EJB のメソッドレベルのトランザクション アイソレーション設定です。

注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の trans-timeout-seconds 要素によってオーバーライドされます。詳細については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。

属性

表 A-32 weblogic.javaee.Idempotent の属性 
名前
説明
データ型
必須/省略可能
IsolationLevel
アイソレーション レベル。有効な値は以下のとおり。
  • READ_COMMITTED - トランザクションは、他のトランザクションでコミットされた更新のみ読み取ることができる。
  • READ_UNCOMITTED - トランザクションでは、他のトランザクションでコミットされていない更新のみ読み取ることができる。
  • REPEATABLE_READ - トランザクションでデータの一部を読み取ると、そのデータが他のトランザクションで変更されても、最初の読み取り時と同じ値が返される。
  • SERIALIZABLE - このトランザクションを同時に複数回実行すると、トランザクションを順番に複数回実行することと同じことになる。
この属性のデフォルトは DEFAULT。
int
省略可能

weblogic.javaee.TransactionTimeoutSeconds

説明

対象 : クラス

トランザクションのタイムアウトを秒単位で定義します。

属性

表 A-33 weblogic.javaee.TransactionTimeoutSeconds の属性 
名前
説明
データ型
必須/省略可能
value
トランザクション タイムアウトの値 (秒)。この属性のデフォルトは 30 (秒)。
int
省略可能


  ページの先頭       前  次