J'ai créé un temporisateur EJB avec une interface locale et je ne peux pas effectuer de recherche JNDI à partir d'un ServletContextListener.Impossible de rechercher EJB3 à partir de ServletContextListener dans JBoss 4.2.3
Voici une partie du code EJB:
@Stateless
@LocalBinding(jndiBinding = "TimedFileDeletion")
public class TimedFileDeletionBean implements TimedFileDeletionBeanLocal {
@Resource
TimerService timerService;
private String timerInfo = "FileDeletionTimer";
public void startTimer() {
....
}
public boolean isItRunning() {
....
}
@Timeout
public void timeout(Timer timer) {
....
}
}
Voici l'interface locale:
public interface TimedFileDeletionBeanLocal {
public void startTimer();
public boolean isItRunning();
}
Et voici le ServletContextListener:
public class StartupEventHandler implements ServletContextListener {
TimedFileDeletionBeanLocal timedFileDeletionBeanLocal;
public StartupEventHandler() {
try {
InitialContext ic = new InitialContext();
timedFileDeletionBeanLocal = (TimedFileDeletionBeanLocal) ic.lookup("java:comp/env/ejb/TimedFileDeletion");
} catch (NamingException e) {
e.printStackTrace();
}
}
public void contextInitialized(ServletContextEvent arg0) {
if(!timedFileDeletionBeanLocal.isItRunning()) {
timedFileDeletionBeanLocal.startTimer();
}
}
public void contextDestroyed(ServletContextEvent arg0) {
}
}
Pour la recherche I aussi utilisé les chaînes suivantes, mais aucune des travaillés: - java: comp/env/TimedF ileDeletion - java: comp/TimedFileDeletion - java: TimedFileDeletion - TimedFileDeletion
Dans tous les cas, je recevais un javax.naming.NameNotFoundException.
Tout conseil serait apprécié.
Merci beaucoup. J'ai regardé le nom dans les journaux, j'ai utilisé ce nom. – Alex