2015-09-22 3 views
1

Я пишу службу, которая будет называть REST-сервис каждые x секунд. Я мог бы сделать это с помощью аннотации EJB @Schedule, а также с помощью ScheduledExecutorService.Должен ли я использовать ejb @Schedule аннотацию над графиком исполнителя

какой лучше использовать? и почему?

+0

Я действительно не знаю ScheduledExecutorService, но Schedule - это явный путь в спецификации EJB для определения таймера. Поэтому я думаю, что это путь, если вы используете EJB в любом случае. Обратите внимание, что расписание основано на календаре, поэтому вы можете сказать, что таймер начнется через каждые 6 секунд минуты, но может быть, что между последним триггером минуты и первым из следующего задержка отличается от x секунд. Кроме того, таймер не гарантирует точность. – jhyot

+0

@jhyot ScheduledExecutorService - это служба ExecutorService, которая позволяет запускать задачу после задержки или выполнять несколько раз с фиксированным интервалом времени между каждым исполнением. Благодарим за объяснение. Я буду использовать аннотацию расписания с помощью ScheduledExecutorService :) – SpyClown

ответ

2

Если вы пишете приложение EJB, вы должны использовать Schedule - спецификация EJB требует, чтобы EJB should not use threads directly, и говорит, что это может привести к ошибкам в контейнере, а также не позволяет контейнеру эффективно управлять ресурсами. В обмен с Schedule вы получаете преимущества управления контейнерами и услугами EJB.

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