EJB 3.1 @EJB Injection dans POJO
Étant un complet de turbot cet après-midi et ne peut pas sembler trouver la réponse nulle part.
Avec la nouvelle EJB 3.1 spec est-il possible d'injecter un EJB dans un pojo? Je sais que dans EJB 3.0 @EJB annotation peut être utilisée pour injecter un EJB mais cela ne fonctionne pas sur de simples pojo.
Si ce n'est pas ce que je dois chercher la fève dans JNDI comme je sais que vous ne pouvez pas simplement utiliser le mot clé new.
Merci à l'avance.
Karl
Êtes-vous à l'aide de CDI? java.sun.com/javaee/6/docs/tutorial/doc/giwhb.html
OriginalL'auteur Karl | 2010-01-07
Vous devez vous connecter pour publier un commentaire.
Oui, utiliser JNDI recherche.
Depuis votre POJO est créé par vous (je suppose), le conteneur n'est pas responsable de l'injection de dépendances.
OriginalL'auteur Bozho
Injection de l'EJB dans un POJO est possible SI vous utilisez la JSR-299 (Java Contexts et Dependency Injection) c'est à dire si votre POJO est un CDI managed bean. Dans ce cas, vous pourriez faire:
Mais ce n'est pas un EJB 3.1, cela vient de CDI. Et si vous n'utilisez pas de CDI, vous aurez à faire une recherche.
OriginalL'auteur Pascal Thivent
La nouvelle EJB spec (3.1) ajoute la possibilité de spécifier mondiale des noms JNDI pour les Ejb. Cela signifie que vous pouvez utiliser dans n'importe quel bean, n'importe où.
Vous devez le faire explicitement la recherche JNDI, cependant, comme un EJB 3.1 conteneur ne sais pas à propos de votre POJO.
La seule exception, qui je suppose ne s'applique pas à vous, c'est si votre POJO est vraiment une application client, auquel cas prévu le champ qui contient les EJB est statique, vous pouvez utiliser le @EJB annotation. Si c'est votre cas, vous devriez vérifier l'application des règles du client dans l'ensemble de la spécification Java EE 5.
Enfin, Java EE 6, avec l'inclusion de la JSR-299, peut permettre à ce que vous décrivez arrive, en quelque sorte; je ne connais pas les spec encore ne peut donc pas commenter.
J'espère que cela aide tous.
Les versions précédentes de Java EE n'a pas précisé le mondial de nommage JNDI de la syntaxe. Ni ont-ils exiger qu'un client distant qui n'est pas une application client doit être en mesure de regarder quoi que ce soit dans JNDI.
OriginalL'auteur Laird Nelson
Je me demande aussi si je pouvais injecter de l'Ejb dans les objets managés. Voir la Soudure (JSR 299 implémentation de référence) documentation pour plus de détails.
Mais vous pouvez faire de l'injection de dépendances à la main à l'intérieur d'un référentiel ou à l'usine, comme ceci:
Si vous avez beaucoup de méthodes où l'injection doit être effectuée, vous pouvez utiliser un intercepteur.
OriginalL'auteur deamon