2011-11-17 5 views
3

Мы используем аннотацию EJB @Schedule, чтобы начать запланированное задание, импортировать дельта SOLR каждые x секунд. Конечно, мы хотим иметь как можно меньше разворот в индексировании. В настоящее время я стараюсь делать дельта каждые 5 секунд.Как сделать метод @Schedule вызываться только один раз за раз

Итак, мой вопрос: могу ли я удостовериться, что задание вызывается только один раз? Итак, скажем, индексирование длится дольше 5 секунд, будут ли очередные расписания ждать до тех пор, пока предыдущий не вернется?

ответ

3

Да. Вы можете сделать bean-компонент @Singleton и использовать @Lock(LockType.Write), чтобы убедиться, что таймеры не работают параллельно. Обратите внимание, что LockType.Write по умолчанию используется в Singleton. Поэтому даже явное упоминание аннотации не требуется.

Смежные вопросы