CommonJ TimerManager против EJB3 TimerService

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

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

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

Спасибо.

3 ответа

Решение

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.

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, если она соответствует вашим потребностям.

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

Другие вопросы по тегам