Избегайте удаления таймера на стеклянной рыбе
У меня есть метод, аннотированный @Schedule, который вызывается контейнером время от времени.
@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void myTimerMethod() throws Exception {
...
}
Проблема в определенных условиях, я хочу, чтобы этот метод выдал исключение, чтобы вызвать откат текущей транзакции. Но если я сделаю это более двух раз, таймер будет удален и больше не вызываться!
INFO: EJB5119:Expunging timer ['68@@1359143163781@@server@@domain1' 'TimedObject = MyBean' 'Application = My-War' 'BEING_DELIVERED' 'PERIODIC' 'Container ID = 89072805830524936' 'Fri Jan 25 21:49:30 CET 2013' '0' '*/5 # * # * # * # * # * # * # null # null # null # true # myTimerMethod # 0' ] after [2] failed deliveries
Я знаю, что могу настроить перепланирование таймера в domain.xml, используя
...
...
...
...
Но мой вопрос, могу ли я настроить этот параметр при развертывании приложения?
Можно'не найти его в:
glassfish-resources.xml
glassfish-ejb-jar.xml
glassfish-web.xml
Есть ли какой-нибудь способ сделать это программно, может быть?
(Мое обоснование заключается в том, чтобы поместить конфигурацию сервера, подобную этой, в конфигурационные файлы, а не настраивать сервер, поэтому мое приложение должно быть возможно установить непосредственно на новую установку glassfish)