У нас есть следующее простое приложение: один бин @Singleton с методом @Timeout и один сервлет, который запускает таймер.После первого развертывания мы видим, что метод вызывается один раз в 2 секунды, что ожидается.Затем после горячего повторного развертывания мы видим, что метод вызывается дважды в течение 2 секунд.После нескольких повторных развертываний метод вызывается несколько раз в течение одних и тех же 2 секунд.Перезапуск сервера не помогает.См. Код ниже:
import javax.ejb.*;
@Remote(TimerRemote.class)
@Singleton
public class TimerBean implements TimerRemote {
@Resource
private SessionContext context;
public void startTimer() {
context.getTimerService().createTimer(2000,2000,null);
}
@Timeout
public void timeoutCallback(javax.ejb.Timer timer) {
System.out.println("timeoutCallback is called: " + timer);
}
}
@ Метод тайм-аута должен вызываться после заданного интервала времени.В настоящее время метод вызывается несколько раз в течение секунды.