Знает ли EJB 3.1 TimerService летнее время? - PullRequest
3 голосов
/ 13 февраля 2020

Я хотел бы создать программируемый планировщик, который запускается один раз в день. Он должен срабатывать ровно в один и тот же час каждый день, независимо от того, включено или выключено летнее время. Поэтому, если он был установлен на 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, потому что я выяснил, что установка часового пояса для таймера была сделана там , Пожалуйста, исправьте меня, если я ошибаюсь.

Будет ли приведенный выше код работать так, как я объяснил / хотел?

Я нашел другой способ сделать это в этом ответе { ссылка }, но я был бы признателен за более удобный способ, как приведенный выше.

...