Код: Выделить всё
@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class MySingletonBean {
public method() {
//uses synchronization primitives to fine control the concurrent access
}
@Schedule(hour = "*", minute = "*", second = "*", persistent = false)
public void update() {
//each 120 seconds update method timeouts and the overlapping/log message occurs
}
}
Проблема:
Каждые 2 минуты wildfly выводит сообщение журнала следующего вида:
(по умолчанию EJB — 1) WFLYEJB0043: A предыдущее выполнение таймера [] все еще продолжается, пропуская это перекрывающееся запланированное выполнение по адресу: .
Мне ясно, о чем идет речь означает: предыдущий таймер не завершился до начала следующего выполнения, и происходит перекрытие.
Кроме того, перекрытие вызывает параллельные проблемы в базовой структуре данных при обновлении.< /p>
Мои вопросы:
1 - Как отбросить следующий график в деле когда таймер работает медленно, избегая перекрытия/параллельного обновления?
2 - Как избежать сообщения журнала, если невозможно отменить перекрывающееся расписание?
Кстати, я подумал разбить метод обновления на два разных расписания (1 секунда и 120 секунд). Но нарушение метода обновления подразумевает разрыв всей обновляемой структуры данных, что как-то сложно и нецелесообразно, по крайней мере на данный момент.
Любая помощь приветствуется!
Подробнее здесь: https://stackoverflow.com/questions/469 ... de-wildfly