package myproject.ejb; import java.util.Date; import javax.annotation.Resource; import javax.ejb.Stateless; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerService; @Stateless public class UsualBean implements UsualLocal { @Resource TimerService timerService; private static long intervalDuration = 3000; private void makeMeHappy() { System.out.println("i am so happy at " + new Date()); } public void createTimer(long intervalDuration) { //это что бы два раза не выполнить одно и то же задание for (Object o : timerService.getTimers()) { if (o instanceof Timer) { ((Timer) o).cancel(); } } this.intervalDuration = intervalDuration; //обратите внимание на второй параметр, это может быть любой Serializable объект Timer timer = timerService.createTimer(intervalDuration, "all your base are belong to us"); } @Timeout private void timeout(Timer timer) { this.makeMeHappy(); //таймер срабатывает один раз, мне же надо через определенный интервал timerService.createTimer(intervalDuration, timer.getInfo()); } }
теперь осталось только запустить этот шедуллер методом createTimer, можно при старте app-сервера
Комментариев нет:
Отправить комментарий