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-сервера

Комментариев нет:
Отправить комментарий