8.8.2. EJB リファレンス解決
このセクションでは、JBoss がどのように実装するかについて説明します
@EJB
と@Resource
。XML は常にアノテーションを上書きしますが、同じルールが適用されることに注意してください。
@EJB アノテーションのルール
- The
@EJB
注釈にもmappedName()
属性。仕様ではこれをベンダー固有のメタデータとして残していますが、JBoss はこれを認識しますmappedName()
参照している EJB のグローバル JNDI 名として。mappedName()
を指定した場合は、他のすべての属性は無視され、このグローバル JNDI 名がバインディングに使用されます。 - 指定した場合
@EJB
属性が定義されていない場合:@EJB ProcessPayment myEjbref;
次に、以下のルールが適用されます。- 参照 Bean の EJB jar は、
@EJB
インジェクションで使用されるインターフェースで EJB を検索します。同じビジネスインターフェースを公開する EJB が複数ある場合、例外が発生します。このインターフェースを持つ BIOSean が 1 つしかない場合は、その Bean が使用されます。 - EAR でインターフェースを公開する EJB を検索します。重複が生じると、例外が発生します。それ以外の場合は、一致する Bean を返します。
- JBoss ランタイムで、そのインターフェースの EJB をグローバルに検索します。同様に、複製が見つかると、例外が発生します。
@EJB.beanName()
に対応<ejb-link>
。の場合beanName()
が定義されたら、と同じアルゴリズムを使用します@EJB
を使用する以外に属性が定義されていないbeanName()
検索のキーとして。この規則の例外は、ejb-link'#' 構文を使用する場合です。'#' 構文を使用すると、参照している EJB が配置されている EAR 内の jar への相対パスを設定できます。詳細は EJB 3.1 仕様を参照してください。