Я хотел бы создать программируемый планировщик, который запускается один раз в день. Он должен срабатывать ровно в один и тот же час каждый день, независимо от того, включено или выключено летнее время. Поэтому, если он был установлен на 6 часов в "Europe/Berlin"
(UTC + 1), когда DST выключен, он также должен срабатывать в 6 часов, когда DST включен (UTC + 2).
I хотел бы использовать EJB TimerService, но не смог найти ничего, касающегося осведомленности о DST.
Пример кода:
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.ScheduleExpression;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.TimerService;
@Singleton
@Startup
public class MyScheduler
{
@Resource
private TimerService timerService;
@Timeout
void myCallbackMethod ()
{
//do something ...
}
@PostConstruct
void init()
{
ScheduleExpression scheduleExpression = new ScheduleExpression();
scheduleExpression.hour("6");
scheduleExpression.timezone("Europe/Berlin");
timerService.createCalendarTimer(scheduleExpression);
}
}
Я использовал ScheduleExpression, потому что я выяснил, что установка часового пояса для таймера была сделана там , Пожалуйста, исправьте меня, если я ошибаюсь.
Будет ли приведенный выше код работать так, как я объяснил / хотел?
Я нашел другой способ сделать это в этом ответе { ссылка }, но я был бы признателен за более удобный способ, как приведенный выше.