@Планирование аннотации в Java EE - PullRequest
3 голосов
/ 29 апреля 2011

Я использую следующую аннотацию для вызова сессионного компонента без сохранения состояния один раз в 5 минут:

@Schedule(second = "0", minute = "0/5", hour = "*")

Я работаю как положено, за исключением того, что он останавливается через несколько дней.Я предполагаю, что может существовать время жизни по умолчанию, и я не знаю, как его переопределить.

Пожалуйста, помогите мне настроить планировщик на бесконечную работу.

Ответы [ 3 ]

1 голос
/ 30 апреля 2011

чтобы узнать, есть ли дата истечения срока действия для вашего объекта, вы можете использовать getTimers (), чтобы вернуть объект этого таймера, а затем использовать этот метод getTimeRemaining(), чтобы узнать, есть ли для него дата истечения срока действия.

в любом случае, вы можете использовать эту аннотацию @Timeout, чтобы сделать что-то в случае тайм-аута:

@Timeout
public void timeout(Timer timer) {
    System.out.println("do something ... ");
}

вы можете напечатать дату здесь, чтобы узнать, когда тайм-аут случится ..

другая вещь, которую выиспользуются «Автоматические таймеры», и он настроен на ejb-jar.xml , поэтому попробуйте взглянуть на ejb-jar.xml , чтобы увидеть, есть ли там дата истечения срока действия ..

0 голосов
/ 01 мая 2017

Ваши аннотации @Schedule выглядят корректно, поэтому прежде всего вы должны проверить журналы и посмотреть, есть ли исключения в ваших запланированных методах.

В соответствии со спецификацией, если исключение выдается внутри метода Timer, этот метод будет вызван еще раз, и если он снова потерпит неудачу, таймер выключится.

0 голосов
/ 05 ноября 2014

В Glassfish в разделе Конфигурация -> Серверная конфигурация -> EJB-контейнер -> EJB-Timeservice новое свойство: reschedule-failed-timer = true

...