7.8.2. Résolution de référence EJB
Cette section explique comment JBoss implémente
@EJB
et @Resource
. Veuillez noter qu'XML remplace toujours les annotations, mais que les mêmes règles s'appliquent.
Règles pour les annotations @EJB
- L'annotation
@EJB
possède également un attributmappedName()
. La spécification le considère comme une métadonnée spécifique au fournisseur tandis que JBoss reconnaitmappedName()
en tant que nom JNDI global du EJB que vous référencez. Si vous avez indiqué unmappedName()
, alors tous les autres attributs seront ignorés et ce nom JNDI global sera utilisé comme liaison. - Si vous indiquez
@EJB
sans attributs définis :@EJB ProcessPayment myEjbref;
Alors les règles suivantes vont s'appliquer :- Le jar EJB du bean de référencement est analysé pour trouver un EJB avec l'interface utilisée dans l'injection
@EJB
. S'il existe plus d'un EJB qui publie la même interface commerciale, alors une exception apparaîtra. S'il n'y a qu'un seul bean dans cette interface, alors celui-là sera utilisé. - Chercher l'EAR des EJB qui publient cette interface. S'il y a des doubles, alors il y aura une exception. Sinon le bean correspondant sera renvoyé.
- Chercher globalement dans le runtime de JBoss un EJB de cette interface. Une fois de plus, s'il y a des doubles, il y aura une exception.
@EJB.beanName()
correspond à<ejb-link>
. Si lebeanName()
est défini, il vous faudra utiliser le même algorithme que@EJB
sans attribut défini mis à partbeanName()
comme une clé de la recherche. Il existe une exception à cette règle si vous utilisez la syntaxe ejb-link '#'. La syntaxe '#' vous permettra de mettre un chemin d'accès relatif dans un jar de l'EJB qui contient l'EJB de référencement. Reportez-vous à la spécification EJB 3.1 pour plus de détails.