ローカルインタフェースを使用して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:コンプ/ TimedFileDeletion - ジャワ:TimedFileDeletion - TimedFileDeletion
すべての場合において、私はjavax.naming.NameNotFoundExceptionがを得ていました。
アドバイスをいただければ幸いです。
ありがとうございました。ログの名前を調べ、その名前を使って動作させた。 – Alex