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 をグローバルに検索します。同様に、複製が見つかると、例外が発生します。
  • @EJB.beanName()<ejb-link> に対応します。beanName() が定義されている場合、検索で beanName() をキーとして使用する以外に定義されていない属性を持つ @EJB と同じアルゴリズムを使用します。このルールの例外は、ejb-link # 構文を使用する場合です。これは、参照している Jakarta Enterprise Beans が置かれている EAR の JAR に相対パスを配置することができます。詳細は、Jakarta Enterprise Beans 3.2 仕様を参照してください。