如何更改一天中的时间以执行 EJB TimeService

How to change hour of day to execute EJB TimeService

我想要一个进程在每天的特定时间 运行。我想使用 EJB 的 Timerservice,但我只能找到如何设置时间间隔,而不是一天中的特定时间:

@Resource
    protected TimerService timerService;

    @Timeout
public void timeoutHandler(Timer timer) {
    String name = timer.getInfo().toString();
    System.out.println("Timer name=" + name);
}

public void startOrModifyTimer(long initialExpiration, long interval, String name){      
    //Cancel previous timer
    Collection<Timer> timers = timerService.getAllTimers();
    for (Timer timer: timers) {
        if (timer.getInfo().equals(name)) {
            timer.cancel();
        }
    }

    TimerConfig config = new TimerConfig();
    config.setInfo(name);
    config.setPersistent(false);
    timerService.createIntervalTimer(initialExpiration, interval, config);
}

我想在 运行 时间将定时器从 "Every day at 2am" 更改为 "Everyday at 3am"。

你想要:

createCalendarTimer(ScheduleExpression schedule) 

ScheduleExpression 将执行您想要的操作。