Oracle® Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans バージョン 3.0 プログラマーズ ガイド 11g リリース 1 (10.3.1) B55529-01 |
|
戻る |
次へ |
以下の節では、EJB 3.0 メタデータ アノテーションに関するリファレンス情報を提供します。
新しい EJB 3.0 プログラミング モデルでは、JDK 5.0 メタデータ アノテーション機能 (http://java.sun.com/developer/technicalArticles/releases/j2se15
を参照) を使用して、アノテーション付き 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 をコンフィグレーションするために使用するプロパティを指定します。確認応答モード、メッセージ セレクタ、想定される送り先やエンドポイントのタイプなどの情報を含めることができます。
このアノテーションは、@javax.ejb.MessageDriven
アノテーションの activationConfig
属性の値としてのみ使用します。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
その例外がアプリケーション例外で、クライアント アプリケーションに直接 (ラップせずに) 報告することを指定します。
このアノテーションは、検査済みの例外と未検査の例外の両方に適用できます。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド、フィールド
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 のルックアップに使用する名前を指定する。 この名前は、クラスおよびそのスーパークラスからなるデプロイメント ユニット内でユニークでなければならない。 |
String |
省略可能 |
beanInterface |
参照先 EJB のインタフェース タイプ (ビジネス インタフェースまたはホーム インタフェース) を指定する。 この属性のデフォルト値は |
Class |
省略可能 |
beanName |
参照先 EJB の名前を指定する。 この属性は、参照先 EJB の EJB JAR ファイル内の複数のセッション Bean が同じインタフェースを実装している場合は、各 Bean の名前をユニークにする必要があるため、この属性が非常に有用になる。 |
String |
省略可能 |
mappedName |
参照先 EJB のグローバル JNDI 名を指定する。 次に例を示す。
この場合は、WebLogic Server JNDI ツリー内にデプロイされている 注意 :マッピングされた名前を使用する EJB は、移行できなくなる可能性がある。 |
String |
省略可能 |
description |
EJB 参照の説明。 |
String |
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
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 メソッドの名前を指定する必要があります。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
セッション Bean のローカル インタフェースを指定します。ローカル インタフェースは、ビジネス ロジックをローカル クライアント (EJB と同じアプリケーションで動作しているクライアント) にエクスポーズします。ローカル クライアントから呼び出せるビジネス メソッドを定義します。
Bean クラスに複数のインタフェース (ただし以下のインタフェースを除く) が実装されている場合は、このアノテーションを指定する必要があります。
java.io.Serializable
java.io.Externalizable
javax.ejb.*
このアノテーションは、ステートレスまたはステートフル セッション Bean にのみ適用されます。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
Bean クラスのローカル ホーム インタフェースを指定します。
ローカル ホーム インタフェースは、ローカル クライアント (EJB と同じアプリケーションで動作するクライアント) から使用して、Bean のインスタンスを作成、削除、および (エンティティ Bean の場合は) 検索することができるメソッドを提供します。ローカル ホーム インタフェースには、特定の Bean インスタンスに固有ではないビジネス ロジックである「ホーム メソッド」もあります。
この属性は、ステートレスおよびステートフル セッション Bean にのみ適用されます。
通常、この属性は、EJB 3.0 Bean の適合する EJB 2.1 コンポーネント ビューを提供する予定がある場合にのみ指定します。このアノテーションは、EJB 2.1 API に記述されている Bean クラスにも使用できます。
以降の節では、このアノテーションについて詳しく説明します。
次の表で属性について簡単に説明します。
表 A-8 javax.ejb.MessageDriven アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
name |
このメッセージ駆動型 Bean の名前を指定する。 この属性を指定しない場合は、Bean クラスの未修飾名がデフォルト値になる。 |
String |
省略可能 |
messageListenerInterface |
Bean クラスのメッセージ リスナ インタフェースを指定する。 Bean クラスにメッセージ リスナ インタフェースが明示的に実装されていない場合や、Bean クラスに複数のインタフェース (ただし、 この属性のデフォルト値は |
Class |
省略可能 |
activationConfig |
操作環境でのメッセージ駆動型 Bean のコンフィグレーションを指定する。確認応答モード、メッセージ セレクタ、想定される送り先やエンドポイントのタイプなどの情報を含めることができる。 アクティブ化コンフィグレーション情報 (プロパティ名や値) は、 |
ActivationConfigProperty[] |
省略可能 |
mappedName |
メッセージ駆動型 Bean をマッピングする製品固有の名前を指定する。 この属性を使用して、このメッセージ駆動型 Bean のメッセージ送り先の JNDI 名を指定することもできる。次に例を示す。
このメッセージ駆動型 Bean は、WebLogic Server JNDI ツリー内にデプロイされている 注意 :この属性を指定した場合は、そのメッセージ駆動型 Bean を移行できなくなる可能性がある。 |
String |
省略可能 |
description |
メッセージ駆動型 Bean の説明を指定する。 |
String |
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
EJB コンテナが Bean インスタンスを再アクティブ化した直後に通知を受信するライフサイクル コールバック メソッドを指定します。
このアノテーションは、ステートフル セッション Bean にのみ適用されます。ステートフル セッション Bean インスタンスがパッシベーションされたときの会話状態は EJB コンテナによって自動的に保持されるため、ほとんどのステートフル セッション Bean ではこのアノテーションを指定する必要はありません。このアノテーション (およびこれと対をなす @PrePassivate
) を使用する必要があるのは、ステートフル セッション Bean で開いておきたいリソースがあり、そのリソースを Bean インスタンスのパッシベーションの前に閉じ、Bean インスタンスのアクティブ化中に開きなおす必要がある場合のみです。
このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。
@PostActivate
アノテーションを付けるメソッドは、以下の要件を満たす必要があります。
メソッドの戻り値の型が void
でなければならない。
検査済みの例外を送出しないこと。
public
、protected
、package private
、または private
にすることは可能。
static
にすることはできない。
final
にすることはできない。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
EJB コンテナが Bean インスタンスをパッシベーションする直前に通知を受信するライフサイクル コールバック メソッドを指定します。
このアノテーションは、ステートフル セッション Bean にのみ適用されます。ステートフル セッション Bean インスタンスがパッシベーションされたときの会話状態は EJB コンテナによって自動的に保持されるため、ほとんどのステートフル セッション Bean ではこのアノテーションを指定する必要はありません。このアノテーション (およびこれと対をなす @PostActivate
) を使用する必要があるのは、ステートフル セッション Bean で開いておきたいリソースがあり、そのリソースを Bean インスタンスのパッシベーションの前に閉じ、Bean インスタンスのアクティブ化中に開きなおす必要がある場合のみです。
このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。
@PrePassivate
アノテーションを付けるメソッドは、以下の要件を満たす必要があります。
メソッドの戻り値の型が void
でなければならない。
検査済みの例外を送出しないこと。
public
、protected
、package private
、または private
にすることは可能。
static
にすることはできない。
final
にすることはできない。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
セッション Bean のリモート インタフェースを指定します。リモート インタフェースはビジネス ロジックをリモート クライアント (EJB とは別のアプリケーションで動作するクライアント) にエクスポーズします。リモート クライアントから呼び出せるビジネス メソッドを定義します。
このアノテーションは、ステートレスまたはステートフル セッション Bean にのみ適用されます。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
Bean クラスのリモート ホーム インタフェースを指定します。
リモート ホーム インタフェースは、リモート クライアント (EJB とは別のアプリケーションで動作するクライアント) で Bean のインスタンスを作成、削除、および検索するためのメソッドを提供します。
この属性は、ステートレスおよびステートフル セッション Bean にのみ適用されます。
通常、この属性は、EJB 3.0 Bean の適合する EJB 2.1 コンポーネント ビューを提供する予定がある場合にのみ指定します。このアノテーションは、EJB 2.1 API に記述されている Bean クラスにも使用できます。
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
@javax.ejb.Remove
アノテーションは、ステートフル セッション Bean の remove メソッドを指定するために使用します。
EJB コンテナは、そのメソッドが完了したときに、@javax.annotation.PreDestroy
アノテーションが付いているメソッドがあればそれを呼び出してからステートフル セッション Bean を破棄します。
以降の節では、このアノテーションについて詳しく説明します。
次の表で属性について簡単に説明します。
表 A-12 javax.ejb.Stateful アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
name |
このステートフル セッション Bean の名前を指定する。 この属性を指定しない場合は、Bean クラスの未修飾名がデフォルト値になる。 |
String |
省略可能 |
mappedName |
ステートフル セッション Bean をマッピングする製品固有の名前を指定する。 この属性を使用して、このステートフル セッション Bean の JNDI 名を指定することもできる。WebLogic Server では、Bean のグローバル JNDI 名を作成する際に
たとえば、ビジネス インタフェースの完全修飾名が 注意 : この属性を指定した場合は、そのステートフル セッション Bean を移行できなくなる可能性がある。 |
String |
省略可能 |
description |
ステートフル セッション Bean の説明。 |
String |
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
次の表で属性について簡単に説明します。
表 A-13 javax.ejb.Stateless アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
name |
このステートレス セッション Bean の名前を指定する。 この属性を指定しない場合は、Bean クラスの未修飾名がデフォルト値になる。 |
String |
省略可能 |
mappedName |
ステートレス セッション Bean をマッピングする製品固有の名前を指定する。 この属性を使用して、このステートレス セッション Bean の JNDI 名を指定することもできる。WebLogic Server では、Bean のグローバル JNDI 名を作成する際に
たとえば、ビジネス インタフェースの完全修飾名が 注意 : この属性を指定した場合は、そのステートレス セッション Bean を移行できなくなる可能性がある。 |
String |
省略可能 |
description |
ステートレス セッション Bean の説明。 |
String |
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
Bean クラスのタイムアウト メソッドを指定します。
このアノテーションは、Bean クラス内で EJB タイマー サービスを簡単にプログラミングするためのアノテーションです。EJB タイマー サービスは EJB コンテナによって提供されるサービスです。このサービスを使用すると、タイマー オブジェクトが期限切れになったときに発生するコールバックをスケジューリングするタイマーを作成できます。
EJB 3.0 より前のバージョンでタイマー サービスをプログラミングするには、Bean クラスに javax.ejb.TimedObject
オブジェクトを実装する必要がありました。また、Bean クラスに ejbTimeout
という名前のメソッドを含める必要もありました。EJB のバージョン 3.0 では、これらの要件が緩和されました。javax.ejb.TimedObject
インタフェースを実装する必要はなくなり、@Timeout
アノテーションを付けている限り、タイムアウト メソッドに任意の名前を付けることができるようになりました。ただし、必要であれば、3.0 より前の方法でタイマー サービスをプログラミングすることもできます。
詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「EJB タイマー サービスのプログラミング」を参照してください。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド
EJB コンテナが EJB ビジネス メソッドをトランザクション コンテキスト内で呼び出すかどうかを指定します。
注意 : このアノテーションを指定した場合は、@TransactionManagement アノテーションを使用して、コンテナ管理によるトランザクションの境界設定を指定する必要があります。 |
このアノテーションは、Bean クラスに指定することも、クラスの特定のメソッド (ビジネス インタフェースのメソッド) に指定することもできます。Bean クラスに指定した場合、アノテーションはそのクラスの該当するすべてのビジネス インタフェース メソッドに適用されます。特定のメソッドに指定した場合は、そのメソッドにのみ適用されます。このアノテーションをクラス レベルとメソッド レベルの両方で指定し、それらの値が食い違っている場合は、メソッド レベルの値が優先されます。
Bean クラスで @TransactionAttribute
アノテーションを指定しない場合は、コンテナ管理によるトランザクションの境界設定が使用されます。トランザクション属性のセマンティクスは REQUIRED と見なされます。
次の表で属性について簡単に説明します。
表 A-14 javax.ejb.TransactionAttribute アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
value |
ビジネス メソッドの呼び出し時に、EJB コンテナがトランザクションの境界設定を管理する方法を指定する。 これらの値の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「コンテナ管理によるトランザクション要素」の表の trans-attribute 要素の説明を参照。 この属性の有効な値は以下のとおり。
デフォルト値は |
TransactionAttributeType |
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
セッション Bean またはメッセージ駆動型 Bean のトランザクションの境界設定管理の種類を指定します。
トランザクションとは、ディスク上、メモリ内、またはデータベース内にあるアプリケーションの状態を変更する作業の 1 単位であり、一度開始されると最後まで完了するか、あるいは一切何も行われません。トランザクションは、EJB コンテナ、Bean のコード、またはクライアント コードによって境界設定 (開始され、コミットまたはロールバックで終わる) できます。このアノテーションは、トランザクションの境界設定を、EJB コンテナで管理するか、ユーザが記述した Bean コードで管理するかを指定します。
Bean クラスにこのアノテーションを指定しない場合、その Bean ではトランザクションの境界設定をコンテナで管理するものと見なされます。
トランザクションの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「トランザクションの設計と管理のオプション」を参照してください。
この節では、以下のアノテーションのリファレンス情報を提供します。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド
定義されているどのデフォルト インターセプタも呼び出さないことを指定します (デフォルト インターセプタは、EJB デプロイメント記述子でのみ指定できます。アノテーションでは指定できません)。
クラス レベルで定義した場合、デフォルト インターセプタは Bean のどのビジネス メソッドに対しても呼び出されません。メソッド レベルで定義した場合は、その特定のビジネス メソッドに対しては呼び出されませんが、それ以外の @ExludeDefaultInterceptors
アノテーションが付いていないすべてのビジネス メソッドに対しては呼び出されます。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド
Bean クラスまたはメソッドに関連付けるインターセプタ クラスを指定します。インターセプタ クラスは、Bean クラスとはまったく別のクラスです。インターセプタ クラスのメソッドは、Bean のビジネス メソッド呼び出しまたはライフサイクル イベントに呼応する形で呼び出されます。
インターセプタ クラスには、ビジネス インターセプタ メソッド (@javax.interceptor.AroundInvoke
アノテーションを付けたメソッド) と、ライフサイクル コールバック メソッド (@javax.annotation.PostConstruct
、@javax.annotation.PreDestroy
、@javax.ejb.PostActivate
、または @javax.ejb.PrePassivate
アノテーションを付けたメソッド) の両方を含めることができます。
Bean クラスに対して定義できるインターセプタ クラスの数に制限はありません。複数のインターセプタ クラスを定義した場合は、そのアノテーション内に指定した順序で呼び出されます。
アノテーションをクラス レベルで指定した場合、インターセプタは EJB のすべてのビジネス メソッドに適用されます。メソッド レベルで指定した場合は、そのメソッドにのみ適用されます。同じインターセプタ クラスを、Bean クラスの複数のメソッドに指定することもできます。メソッド レベルのインターセプタは、デフォルトでは、適用されるすべてのインターセプタ (デフォルト インターセプタ、クラス レベルのインターセプタなど) の後に呼び出されます。
この節では、以下のアノテーションのリファレンス情報を提供します。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド、フィールド
コンテナ管理の EntityManager
永続性コンテキストへの依存性を指定します。
このアノテーションは、3.0 エンティティ Bean と対話するために使用します。通常は EntityManager
インスタンスへの依存性注入を実行します。
EntityManager
インタフェースには、永続性コンテキストとの対話に使用するメソッドが定義されています。永続性コンテキストとは、エンティティ インスタンスのセットです。エンティティとは、軽量の永続ドメイン オブジェクトです。EntityManager
API を使用すると、永続エンティティ インスタンスの作成や削除、主キーに基づくエンティティの検索、およびエンティティに対するクエリを実行できます。
次の表で属性について簡単に説明します。
表 A-17 javax.pesistence.PersistenceContext アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
name |
この属性は、JNDI ルックアップを使用して |
String |
省略可能 |
unitName |
永続性ユニットの名前を指定する。 この属性の値として 注意 : 参照するスコープ内に複数の永続性ユニットがある場合は、この属性を指定する必要がある。 |
String |
省略可能 |
type |
永続性コンテキストの存続期間を、1 つのトランザクションのスコープに限定するか、1 つのトランザクションのスコープを超えて延長させるかを指定する。 この属性の有効な値は以下のとおり。
デフォルト値は |
|
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド、フィールド
EntityManagerFactory
オブジェクトへの依存性を指定します。
このアノテーションは、3.0 エンティティ Bean と対話するために使用します。通常は、EntityManagerFactory
への依存性注入を実行します。この EntityManagerFactory
を使用して、1 つまたは複数の EntityManager
インスタンスを作成できます。このアノテーションは @PersistenceContext
アノテーションに似ていますが、EntityManager
の作成や破棄を EJB コンテナに任せずユーザ自身が行うため、その存続期間をより細かく制御できる点が異なります。
EntityManager
インタフェースには、永続性コンテキストとの対話に使用するメソッドが定義されています。永続性コンテキストとは、エンティティ インスタンスのセットです。エンティティとは、軽量の永続ドメイン オブジェクトです。EntityManager
API を使用すると、永続エンティティ インスタンスの作成や削除、主キーに基づくエンティティの検索、およびエンティティに対するクエリを実行できます。
次の表で属性について簡単に説明します。
表 A-19 javax.pesistence.PersistenceUnit アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
name |
この属性は、依存性注入を使用する場合は指定する必要はない。JNDI も使用して情報をルックアップする場合にのみ指定する。 |
String |
省略可能 |
unitName |
この属性を設定した場合は、参照先の永続性ユニットが EJB コンテナによって自動的にデプロイされ、その JNDI 名としてその永続性ユニット名が設定される。同様に、この属性を指定しない場合でも、永続性コンテキスト情報を注入する変数の名前を 参照するスコープ内に複数の永続性ユニットがある場合にのみ、この属性を指定する必要がある。 |
String |
省略可能 |
この節では、以下のアノテーションのリファレンス情報を提供します。
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
依存性注入が完了した後、1 番目のビジネス メソッドを呼び出す前に、初期化を実行するために EJB コンテナから呼び出す必要のあるライフサイクル コールバック メソッドを指定します。
依存性注入を含むすべての Bean クラスには、@PostConstruct
メソッドを指定できます。
このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。
@PostConstruct
アノテーションを付けるメソッドは、以下の要件を満たす必要があります。
メソッドの戻り値の型が void
でなければならない。
検査済みの例外を送出しないこと。
public
、protected
、package private
、または private
にすることは可能。
static
にすることはできない。
final
にすることはできない。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
EJB コンテナが Bean クラス インスタンスを破棄する直前に通知を受信するライフサイクル コールバック メソッドを指定します。通常、このアノテーションは、Bean クラスが保持しているリソースを解放するメソッドに適用します。
このアノテーションは、Bean クラス内の 1 つのメソッドにのみ付けることができます。このアノテーションを複数のメソッドに付けた場合、その EJB はデプロイされません。
@PreDestroy
アノテーションを付けるメソッドは、以下の要件を満たす必要があります。
メソッドの戻り値の型が void
でなければならない。
検査済みの例外を送出しないこと。
public
、protected
、package private
、または private
にすることは可能。
static
にすることはできない。
final
にすることはできない。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド、フィールド
外部リソース (JDBC データ ソース、JMS 送り先、接続ファクトリなど) への依存性を指定します。
このアノテーションをフィールドまたはメソッドに指定すると、Bean の初期化時に、要求されたリソースのインスタンスが Bean に注入されます。このアノテーションをクラスに適用すると、Bean が実行時にルックアップするリソースが宣言されます。
次の表で属性について簡単に説明します。
表 A-21 javax.annotation.Resource アノテーションの属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
name |
リソース参照の名前を指定する。
|
String |
省略可能 |
type |
リソースの Java データ型を指定する。
|
Class |
省略可能 |
authenticationType |
このリソースに使用する認証タイプを指定する。 この属性は、サポートされるタイプの接続ファクトリを表すリソースにのみ指定する。 この属性の有効な値は以下のとおり。
デフォルト値は |
AuthenticationType |
省略可能 |
shareable |
リソースを、この EJB と他の EJB との間で共有できるかどうかを指定する。 この属性は、サポートされるタイプの接続ファクトリまたは ORB オブジェクト インスタンスを表すリソースにのみ指定する。 この属性の有効な値は、 |
boolean |
省略可能 |
mappedName |
依存リソースのグローバル JNDI 名を指定する。 次に例を示す。
この場合は、WebLogic Server JNDI ツリー内にデプロイされている |
String |
省略可能 |
description |
リソースの説明を指定する。 |
String |
省略可能 |
この節では、以下のアノテーションのリファレンス情報を提供します。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
EJB で使用するセキュリティ ロールを定義します。
通常、このアノテーションは、アノテーションを付けたクラスのメソッド内から (たとえば isUserInRole
メソッドを使用して) テストできるロールを定義するために使用します。また、クラスまたはクラスのメソッドで @RolesAllowed
アノテーションを使用している場合はロールが暗黙的に宣言されますが、このアノテーションを使用することでそれらのロールを明示的に宣言できます。
セキュリティ ロールは、WebLogic Server で Administration Console を使用して作成できます。詳細については、Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「セキュリティ ロールの管理」を参照してください。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス、メソッド
EJB 内のメソッドにアクセスできるセキュリティ ロールのリストを指定します。
クラス レベルで指定した場合は、Bean クラス内のすべてのメソッドに適用されます。メソッド レベルで指定した場合は、そのメソッドにのみ適用されます。このアノテーションをクラス レベルとメソッド レベルの両方で指定した場合は、クラス レベルの値がメソッド レベルの値によってオーバーライドされます。
セキュリティ ロールは、WebLogic Server で Administration Console を使用して作成できます。詳細については、Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「セキュリティ ロールの管理」を参照してください。
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
EJB コンテナ内で実際に EJB を実行するセキュリティ ロールを指定します。
指定するセキュリティ ロールは、WebLogic Server のセキュリティ レルム内に存在し、ユーザまたはグループにマッピングされている必要があります。詳細については、Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「セキュリティ ロールの管理」を参照してください。
この節では、以下の WebLogic アノテーションのリファレンス情報を提供します。
weblogic.javaee.TransactionTimeoutSeconds
注意 : この節で説明するアノテーションは、それぞれに相当するコンフィグレーションがweblogic-ejb-jar.xml デプロイメント記述子で定義されている場合はオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス (ステートフル セッション EJB のみ)
トランザクション中にインスタンスが削除できるかどうかを指定するフラグです。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の allow-remove-during-transaction 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス (ステートフルまたはステートレス セッション EJB のみ)
EJB がリモートから呼び出されたか同じ EAR 内から呼び出されたかに関係なく、パラメータをコピーするかどうか (または参照によって渡すかどうか) を指定するフラグです。
注意 : メソッドのパラメータは、EJB がリモートで呼び出されたときには常に値で渡されます。このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の enable-call-by-reference 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
ID を指定した警告メッセージを WebLogic Server が無効化するように指定します。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の disable-warning 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
次の表で属性について簡単に説明します。
表 A-26 weblogic.javaee.DisableWarnings の属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
WarningCode |
警告コードを指定する。以下の 4 つの値のいずれかに設定する。
|
String |
必須 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス
同じメソッドを同じ引数で繰り返し呼び出しても、1 回の呼び出しと同じ効果がもたらされるように記述された EJB を指定します。これにより、フェイルオーバ ハンドラは、失敗したサーバ上で実際に呼び出しがコンパイルされるかどうかを知らなくても、失敗した呼び出しを再試行できるようになります。あるメソッドについて多重呼び出し不変を有効にした場合、EJB スタブは、EJB のホスト サーバに接続できるかぎり、あらゆる失敗から自動的に回復することができます。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の idempotent-method および retry-methods-on-rollback 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
JMS 送り先に接続するときの MDB のクライアント ID を指定します。JMS トピックに対する恒久サブスクリプションで必須です。
weblogic.javaee.MessageDestinationConfiguration で MDB が使用する接続ファクトリを指定した場合、クライアント ID は config.xml
内の関連付けられている JMSConnectionFactory
要素の ClientID
要素で定義できます。
config.xml
の JMSConnectionFactory
で ClientID
を指定しないか、デフォルト接続ファクトリを使用する (weblogic.javaee.MessageDestinationConfiguration を指定しない) 場合、MDB は jms-client-id
値をそのクライアント ID として使用します。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の jms-client-id 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス (ステートフルまたはステートレス セッション EJB のみ)
WebLogic Server で使用可能な実際の EJB、リソース、または参照の JNDI 名を指定します。リモート インタフェースが 1 つしかない場合、このアノテーションはリモート インタフェースおよび実装クラスで有効です。
注意 : JNDI 名を Bean に割り当てるのは推奨されません。グローバル JNDI 名は、クラスタ化されたサーバの起動時に大量のマルチキャスト トラフィックを引き起こします。『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「エンタープライズ JavaBean の実装」の「EJB リンクの使用」を参照してください。EJB を含む EAR ライブラリがある場合、JNDI 名の衝突が起きるため、そのライブラリを参照するアプリケーションを複数デプロイすることはできません。これは、EAR ライブラリ内の個々の EJB に対してグローバル JNDI 名を設定できないからです。グローバル JNDI 名はライブラリ全体に対してのみ設定できます。 このアノテーションは、 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : クラス (メッセージ駆動型 EJB のみ)
メッセージ駆動型 EJB がキューとトピックを作成するためにルックアップする JMS 接続ファクトリの JNDI 名を指定します。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の connection-factory-jndi-name 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
次の表で属性について簡単に説明します。
表 A-31 weblogic.javaee.MessageDestinationConfiguration の属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
connectionFactoryJNDIName |
接続ファクトリの JNDI 名。この属性のデフォルトは空文字列。 |
String |
省略可能 |
initialContextFactory |
WebLogic 初期コンテキスト ファクトリ。この属性のデフォルトは |
Class |
省略可能 |
providerURL |
プロバイダの URL。この属性のデフォルトは |
String |
省略可能 |
以降の節では、このアノテーションについて詳しく説明します。
対象 : メソッド
EJB のメソッドレベルのトランザクション アイソレーション設定です。
注意 : このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子の trans-timeout-seconds 要素によってオーバーライドされます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「weblogic-ejb-jar.xml デプロイメント記述子のリファレンス」を参照してください。 |
次の表で属性について簡単に説明します。
表 A-32 weblogic.javaee.Idempotent の属性
名前 | 説明 | データ型 | 必須/省略可能 |
---|---|---|---|
IsolationLevel |
アイソレーション レベル。有効な値は以下のとおり。
この属性のデフォルトは DEFAULT。 |
int |
省略可能 |