как приостановить и перезапустить автомат c EJB - PullRequest
1 голос
/ 09 января 2020

Я изучаю EJB и проверяю автоматическую функцию c, создав простой EJB, как показано ниже.
Я надеюсь, что он может работать автоматически после развертывания.

import javax.ejb.Schedule;
import javax.ejb.Stateless;
@Stateless
public class TestAuto {

@Schedule(minute="*",hour="15")
    public void testprint()
    {
        System.out.println("AutoWrite");
    }
}

Я запускаю его в затмение, и оно успешно развернуто, но я не вижу вывод на консоли. Может кто-нибудь помочь? Я использовал wildfly 11, java 1.8 и ejb 3.2. Спасибо. Обновление: теперь это работает. Но как его приостановить и перезапустить?

1 Ответ

0 голосов
/ 17 февраля 2020

Не существует таких понятий, как «пауза» и «перезапуск», но вы можете отменить таймер на основе аннотаций, объявленный с помощью @Schedule, и воссоздать его. Вам нужно будет где-то хранить расписание выражений.

Вы можете сделать что-то вроде этого:

@Resource
private TimerService timerService;

public ScheduleExpression cancelTimer() {
    Timer currentTimer = timerService.getTimers().iterator().next();
    ScheduleExpression scheduleExpression = currentTimer.getSchedule();
    currentTimer.cancel();
    return scheduleExpression;
}

public void restartTimer(ScheduleExpression scheduleExpression) {
    timerService.createCalendarTimer(scheduleExpression);
}
...