Une petite classe donc qui, avec sa simple méthode à appeller dans le contructeur de votre back bean vous permettra par réflexion d'effectuer un context lookup vers votre ejb (Champs @EJB public uniquement). Toujours en attendant l'injection @EJB dans le nouveau WorkShop.
télécharger la classe java
Pour cerain il peut se produire une erreur de lookup du style :
javax.naming.NameNotFoundException: While trying to look up comp/env/Addition/Local in /app/webapp/TEST_JSF_EBJ/12227708.; remaining name 'comp/env/Addition/Local'
Pour résoudre ce problème j'ai simplement ajouté un ServletContextListener à mon application web dans laquelle je référence mes ejb . Après le lookup local dans les back beans fonctionne a merveille...
public class testListener implements ServletContextListener {
@EJB(name = "Addition/Local")
public AdditionRemote ar;
public void contextDestroyed(ServletContextEvent arg0) { }
public void contextInitialized(ServletContextEvent arg0) { }
}
Exemple d'utilisation :
@EJB(name = "Addition/Local")
public AdditionRemote ar; // is va être injecté dans le constructeur
public testBackBean() {
fr.sihm.common.ejblocator.EJBLocator.injecterMesEJB(this);
}
public String getResultEJB() // on teste
{
if (ar == null) {
return "NOT BOUND";
} else {
return "Bouded , result = " + ar.additionner(5, 5);
}
2 commentaires:
Je suis d'accord avec Alexandre :)
whhhhhaaaaa ce jour est a marquer d une pierre blanche !!!!
merci nicolas ;-)
Enregistrer un commentaire