0
我已經創建了一個具有本地接口的EJB定時器,並且我無法從ServletContextListener中爲它執行JNDI查找。無法從JBoss 4.2.3中的ServletContextListener查找EJB3
這裏是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/TimedF ileDeletion - java的:COMP/TimedFileDeletion - java的:TimedFileDeletion - TimedFileDeletion
在所有情況下,我得到一個javax.naming.NameNotFoundException。
任何意見,將不勝感激。
非常感謝。我在日誌中查找名稱,使用它的名稱。 – Alex 2010-11-29 18:32:11