Oracle® Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansバージョン3.0のプログラミング 11gリリース1(10.3.6) B61625-04 |
|
![]() 前 |
![]() 次 |
以下の節では、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
属性の値としてのみ使用されます。このアノテーションの詳細は、『Oracle WebLogic ServerメッセージドリブンBeanのプログラミング』のEJB 3.0コンプライアンスMDBの使用およびMDB向けデプロイメント要素およびアノテーションに関する項を参照してください。
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス
その例外がアプリケーション例外で、クライアント・アプリケーションに直接(ラップせずに)報告することを指定します。
このアノテーションは、検査済みの例外と未検査の例外の両方に適用できます。
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス、メソッド、フィールド
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 WebLogic Server Enterprise JavaBeansのプログラミング』の「EJBタイマー・サービスのプログラミング」を参照してください。
このアノテーションには、属性はありません。
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス、メソッド
EJBコンテナがEJBビジネス・メソッドをトランザクション・コンテキスト内で呼び出すかどうかを指定します。
注意: このアノテーションを指定した場合は、@TransactionManagement アノテーションを使用して、コンテナ管理によるトランザクションの境界設定を指定する必要があります。 |
このアノテーションは、Beanクラスに指定することも、クラスの特定のメソッド(ビジネス・インタフェースのメソッド)に指定することもできます。Beanクラスに指定した場合、アノテーションはそのクラスの該当するすべてのビジネス・インタフェース・メソッドに適用されます。特定のメソッドに指定した場合は、そのメソッドにのみ適用されます。このアノテーションをクラス・レベルとメソッド・レベルの両方で指定し、それらの値が食い違っている場合は、メソッド・レベルの値が優先されます。
Beanクラスで@TransactionAttribute
アノテーションを指定しない場合は、コンテナ管理によるトランザクションの境界設定が使用されます。トランザクション属性のセマンティクスはREQUIREDと見なされます。
次の表で属性について簡単に説明します。
表A-14 javax.ejb.TransactionAttributeアノテーションの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
value |
ビジネス・メソッドの呼出し時に、EJBコンテナがトランザクションの境界設定を管理する方法を指定します。 これらの値の詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「コンテナ管理によるトランザクション要素」の表のtrans-attribute要素の説明を参照してください。 この属性の有効な値は次のとおりです:
デフォルト値は |
TransactionAttributeType |
いいえ。 |
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス
セッションBeanまたはメッセージドリブンBeanのトランザクションの境界設定管理の種類を指定します。
トランザクションとは、ディスク上、メモリー内、またはデータベース内にあるアプリケーションの状態を変更する作業の1単位であり、一度開始されると最後まで完了するか、あるいは一切何も行われません。トランザクションは、EJBコンテナ、Beanのコード、またはクライアント・コードによって境界設定(開始およびコミットまたはロールバックでの終了)できます。このアノテーションは、トランザクションの境界設定を、EJBコンテナで管理するか、ユーザーが記述したBeanコードで管理するかを指定します。
Beanクラスにこのアノテーションを指定しない場合、そのBeanではトランザクションの境界設定をコンテナで管理するものと見なされます。
トランザクションの詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「トランザクションの設計と管理のオプション」を参照してください。
この節では、以下のアノテーションのリファレンス情報を提供します。
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス、メソッド
定義されているどのデフォルト・インターセプタも呼び出さないことを指定します(デフォルト・インターセプタは、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.persistence.PersistenceContextAnnotationの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
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.persistence.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で管理コンソールを使用して作成できます。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのセキュリティ・ロールの管理に関する項を参照してください。
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス、メソッド
EJB内のメソッドにアクセスできるセキュリティ・ロールのリストを指定します。
クラス・レベルで指定した場合は、Beanクラス内のすべてのメソッドに適用されます。メソッド・レベルで指定した場合は、そのメソッドにのみ適用されます。このアノテーションをクラス・レベルとメソッド・レベルの両方で指定した場合は、クラス・レベルの値がメソッド・レベルの値によってオーバーライドされます。
セキュリティ・ロールは、WebLogic Serverで管理コンソールを使用して作成できます。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのセキュリティ・ロールの管理に関する項を参照してください。
この節では、以下のWebLogicアノテーションのリファレンス情報を提供します。
weblogic.javaee.TransactionTimeoutSeconds
注意: この項で説明するアノテーションは、それぞれに相当する構成がweblogic-ejb-jar.xml デプロイメント記述子で定義されている場合はオーバーライドされます。詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「weblogic-ejb-jar.xmlデプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス(ステートフルまたはステートレス・セッションEJBのみ)
EJBがリモートから呼び出されたか同じEAR内から呼び出されたかに関係なく、パラメータをコピーするかどうか(または参照によって渡すかどうか)を指定するフラグです。
注意: メソッドのパラメータは、EJBがリモートで呼び出されたときには常に値で渡されます。このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子のenable-call-by-reference 要素によってオーバーライドされます。詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「weblogic-ejb-jar.xmlデプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス
IDを指定した警告メッセージをWebLogic Serverが無効化するように指定します。
注意: このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子のdisable-warning 要素によってオーバーライドされます。詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「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 WebLogic Server Enterprise JavaBeansのプログラミング』の「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 WebLogic Server Enterprise JavaBeansのプログラミング』の「weblogic-ejb-jar.xmlデプロイメント記述子のリファレンス」を参照してください。 |
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス(ステートフルまたはステートレス・セッションEJBのみ)
WebLogic Serverで使用可能な実際のEJB、リソース、または参照のJNDI名を指定します。リモート・インタフェースが1つしかない場合、このアノテーションはリモート・インタフェースおよび実装クラスで有効です。
注意: JNDI名をBeanに割り当てるのは推奨されません。グローバルJNDI名は、クラスタ化されたサーバーの起動時に大量のマルチキャスト・トラフィックを引き起こします。『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「Enterprise JavaBeansの実装」のEJBリンクの使用に関する項を参照してください。EJBを含むEARライブラリがある場合、JNDI名の競合が起きるため、そのライブラリを参照するアプリケーションを複数デプロイすることはできません。これは、EARライブラリ内の個々のEJBに対してグローバルJNDI名を設定できないからです。グローバルJNDI名はライブラリ全体に対してのみ設定できます。 このアノテーションは、 |
以降の節では、このアノテーションについて詳しく説明します。
ターゲット:クラス(メッセージドリブンEJBのみ)
メッセージドリブンEJBがキューとトピックを作成するためにルックアップするJMS接続ファクトリのJNDI名を指定します。
注意: このアノテーションは、weblogic-ejb-jar.xml デプロイメント記述子のconnection-factory-jndi-name 要素によってオーバーライドされます。詳細は、『Oracle WebLogic Server Enterprise JavaBeansのプログラミング』の「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 WebLogic Server Enterprise JavaBeansのプログラミング』の「weblogic-ejb-jar.xmlデプロイメント記述子のリファレンス」を参照してください。 |
次の表で属性について簡単に説明します。
表A-32 weblogic.javaee.Idempotentの属性
名前 | 説明 | データ型 | 必須? |
---|---|---|---|
IsolationLevel |
分離レベル。有効な値は次のとおりです:
この属性のデフォルトはDEFAULTです。 |
int |
いいえ |