Какие инструменты существуют для синхронизированных пакетных процессов в Java EE? - PullRequest
2 голосов
/ 17 сентября 2008

Мой работодатель только что попросил меня запустить синхронизированный пакетный процесс в приложении Java EE WebSphere, которое они запускают. Предполагается, что он будет проходить определенный класс каждый день в 11:30.

Я не очень хорошо знаком с Java EE и сервером WebSphere (или tomcat, в среде разработки), и я копался, но все, что я нашел, - это класс java timer, но не то, как его установить или вызвать его.

Похоже, что редактирование файла web.xml также необходимо.

Любая помощь будет оценена!

Ответы [ 7 ]

5 голосов
/ 17 сентября 2008

Вам следует взглянуть на библиотеку с открытым исходным кодом Quartz от OpenSymphony. Очень прост в использовании и идеально подходит для такого рода вещей.

TimerTasks лучше всего подходят для запуска чего-то в ближайшем будущем. Но для повторного выполнения в таком большом периоде, как этот, Кварц превосходит. Вы даже можете хранить свой список предстоящих задач в постоянном хранилище, таком как файл или база данных, чтобы при перезапуске вашего приложения предстоящие синхронизированные задания не терялись.

Кроме того, есть фантастическая абстракция для Quartz в среде Spring.

2 голосов
/ 24 ноября 2008

В WebSphere вы можете использовать службу планировщика для запуска выполнения метода в классе Java. Планировщик предоставляет календарь для планирования выполнения заданий (аналогично cron), или вы можете разработать свой собственный.

Вот ссылка на страницу с описанием планировщика в документации WAS 6.1:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp

1 голос
/ 19 сентября 2008

EJB 3.1 будет иметь улучшенные службы таймера, а также ловушки жизненного цикла приложения, которые устраняют необходимость использования сервлетов для запуска задач без взаимодействия с пользователем.

Это может дать ответ на заголовок вопроса, но для «реального» вопроса, касающегося устаревшего приложения (написанного более 6 месяцев назад;)), работающего в websphere, я бы порекомендовал использовать стартовый сервлет и таймер EJB оказание услуг.

Обслуживание таймера в J2EE 1.4 (EJB 2.1)

Для EJB 3.0 (и 3.1, как только появится), есть несколько хороших аннотаций;)

Я бы не стал вводить другую библиотеку , если она вам НЕ ОЧЕНЬ нужна. Служба таймера должна быть достаточной для выполнения произвольной работы ежедневно.

НТН,
Martin

0 голосов
/ 08 июня 2009
0 голосов
/ 19 сентября 2008

В WebSphere отсутствует поддержка планирования.

Если вы работаете в Unix, вы можете использовать crontab для планирования запроса на страницу вашего веб-приложения. Я полагаю, на окнах также есть возможность запланировать запрос на страницу. В моем crontab я планирую запросить веб-страницу каждый день в 8:45

45 8 * * * GET http://www.domain.com/myBatch?securitykey=verysecret

Теперь каждое утро вызывается сервлет myBatch, и там я могу делать все, что нужно сделать в это время. Чтобы другие не вызывали эту страницу и не запускали пакет, я добавил параметр securitykey.

0 голосов
/ 17 сентября 2008

Кварц является частью стандартного дистрибутива JBoss 4.2.x.

И это действительно хорошая библиотека, которая без особой работы позволяет также определять простые рабочие процессы.

0 голосов
/ 17 сентября 2008

В вашем файле web.xml вы можете настроить загрузку сервлета при запуске.
Синтаксис:


<Нагрузки на старте />

Сделайте это, затем в методе init в сервлете вы можете настроить Timer / TimerTask, чтобы делать все, что вам нужно. TimerTasks похожи на Threads, но вы можете запланировать их запуск.

...