четверг, 17 сентября 2009 г.

жава ее Шедулер своими руками

Все мы иногда что-нибудь планируем, ставим себе галочки в уме что утром будем просыпаться и делать зарядку или что завтра ляжем спать не в два а часов в одинадцать. так вот, если нифига не получается - значит плохой планировщик задач. сегодня напишем свой планировщик задач для javaee app-сервера:
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-сервера

Комментариев нет:

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