Comment utiliser JNDI pour obtenir une nouvelle session stateful Bean, en EJB3?
-
27-09-2019 - |
Question
Je suis en train d'utiliser JNDI pour obtenir une nouvelle session stateful Bean dans un servlet (comme une variable locale). Ma méthode de doGet()
a ce qui suit:
Bean bean = (Bean) new InitialContext().lookup("beanName");
Je l'ai essayé, y compris java:comp/env
mais toutes mes tentatives ont conduit à nommer des exceptions.
Je tente de lier le grain dans l'annotation @Stateful
, en utilisant différentes hypothèses comme @Stateful(name="beanName")
et @Stateful(mappedName="beanName")
La solution
Ce que je avais besoin était d'utiliser l'annotation @EJB
sur le servlet au niveau de la classe, comme suit:
@EJB(name="beanName", beanInterface = Bean.class)
Ensuite, la recherche dans la méthode de service peut se produire en utilisant le nom lié par l'annotation @EJB
:
Bean beanInstance = (Bean) new InitialContext().lookup("java:comp/env/beanName");
Il n'y a pas besoin de quoi que ce soit dans la classe Bean lui-même, autre que l'annotation @Stateful
ordinaire.