CommonJ TimerManager против EJB3 TimerService - PullRequest
8 голосов
/ 07 июля 2011

Мне нужно реализовать простой (не кластеризованный) таймер для WebLogic, и кажется, что есть две разные «стандартные» опции

  • API таймера и диспетчера работ (CommonJ)
  • EJB3.0 TimerService

Есть ли у кого-нибудь совет по использованию CommonJ TimerManager по сравнению с EJB3 TimerService в WebLogic 10.0?

Спасибо.

Ответы [ 3 ]

9 голосов
/ 23 февраля 2013

CommonJ изначально предлагался в рамках JSR 237, который был снят в 2008 году и объединен с JSR 236 Concurrency Utilities для платформы Java EE.Обратите внимание, что это означает существенное изменение предложенного CommonJ стандарта и API.Имя CommonJ удалено, новые пакеты находятся в javax.enterprise.concurrent, а не в commonj.timers и commonj.work, а оригинальные классы TimerManager, Timer и TimerListener заменены несоответствующими интерфейсами / классами, включая ManagedScheduledExecutorService, ManagedTask,ManagedTaskListener, Trigger.

Этот последний JSR 236 недавно прошел публичное рассмотрение и, следовательно, должен скоро стать стандартом.По состоянию на ноябрь 2012 года, он является предварительным кандидатом для включения в спецификацию Java EE 7 (JSR 342), но это будет подтверждено после того, как 342 будет завершен и выпущен.

Следовательно, следующие проблемы с CommonJ:

  • не являются и не будут стандартом Java, пока не будут существенно изменены в JSR 236, который будет включен в Java EE 7 или более позднюю версию.
  • это выходит за рамки ваших требований, по-видимому, и сложнее, чем служба таймера EJB 3.0

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

4 голосов
/ 09 января 2012

TimerService в EJB 3.0 несколько ограничен по сравнению с CommonJ Timer Manager. Например, для реализации гибкого планирования задач требуются стандартный код и конфигурация конкретного контейнера. Это было упрощено с введением аннотации @Scheduled в EJB 3.1.

Если вы придерживаетесь EJB 3.0 и вам нужно легко и гибко настраивать планирование задач, API CommonJ Timer Manager является жизнеспособным вариантом.

Кроме того, планировщик задач из Spring Framework (org.springframework.scheduling.TaskScheduler) хорошо выполняет абстрагирование API-интерфейса Timer Manager и позволяет декларативную настройку с помощью выражений cron.

0 голосов
/ 08 июля 2011

Да, если функции TimeService соответствуют вашим требованиям, используйте его - это часть стандарта Java EE! Зачем использовать другую библиотеку, если это не является абсолютно необходимым.

...