【发布时间】:2010-11-28 16:17:03
【问题描述】:
我创建了一个带有本地接口的 EJB 计时器,但我无法从 ServletContextListener 中对其进行 JNDI 查找。
这里是 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) {
....
}
}
这里是本地界面:
public interface TimedFileDeletionBeanLocal {
public void startTimer();
public boolean isItRunning();
}
这里是 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) {
}
}
对于查找,我还使用了以下字符串,但没有一个起作用: - java:comp/env/TimedFileDeletion - java:comp/TimedFileDeletion - java:TimedFileDeletion - 定时文件删除
在所有情况下,我都会收到 javax.naming.NameNotFoundException。
任何建议将不胜感激。
【问题讨论】:
标签: java servlets jboss ejb jndi