A.2. Jakarta Enterprise Beans リファレンス解決
このセクションでは、JBoss EAP による @EJB
および @Resource
の実装方法について説明します。XML は常にアノテーションを上書きしますが、同じルールが適用されることに注意してください。
- @EJB アノテーションのルール
-
@EJB
アノテーションにはmappedName()
属性もあります。この仕様はこれをベンダー固有のメタデータとして残しますが、JBoss EAP は参照している Jakarta Enterprise Beans のグローバル Java Naming and Directory Interface 名としてmappedName()
を認識します。mappedName()
を指定した場合、他の属性はすべて無視され、バインディングにこのグローバル Java Naming および Directory Interface 名が使用されます。 属性が定義されていない状態で
@EJB
を指定する場合:@EJB ProcessPayment myEjbref;
次に、以下のルールが適用されます。
-
参照 Bean の Jakarta Enterprise Beans JAR は、
@EJB
インジェクションで使用されるインターフェイスで Jakarta Enterprise Beans を検索します。同じビジネスインターフェイスをパブリッシュする Jakarta Enterprise Beans が複数存在する場合、例外が発生します。このインターフェイスを持つ BIOSean が 1 つしかない場合は、その Bean が使用されます。 - EAR でインターフェイスを公開する Jakarta Enterprise Beans を検索します。重複が生じると、例外が発生します。それ以外の場合は、一致する Bean を返します。
- JBoss EAP ランタイムで、そのインターフェイスの Jakarta Enterprise Beans をグローバルに検索します。同様に、複製が見つかると、例外が発生します。
-
参照 Bean の Jakarta Enterprise Beans JAR は、
-
@EJB.beanName()
は<ejb-link>
に対応します。beanName()
が定義されている場合、検索でbeanName()
をキーとして使用する以外に定義されていない属性を持つ@EJB
と同じアルゴリズムを使用します。このルールの例外は、ejb-link # 構文を使用する場合です。これは、参照している Jakarta Enterprise Beans が置かれている EAR の JAR に相対パスを配置することができます。詳細は、Jakarta Enterprise Beans 3.2 仕様を参照してください。
-