Какие инструменты существуют для пакетных процессов по времени в Java EE?

StackOverflow https://stackoverflow.com/questions/78194

Вопрос

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

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

Кажется, также необходимо отредактировать файл web.xml.

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

Это было полезно?

Решение

Вам стоит посмотреть открытый исходный код Кварцевая библиотека из ОпенСимфони.Очень прост в использовании и идеально подходит для подобных вещей.

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

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

Другие советы

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

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

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

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

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

Служба таймера в J2EE 1.4 (EJB 2.1)

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

Я бы не представил еще один библиотека если только вам это ДЕЙСТВИТЕЛЬНО не нужно.Службы таймера должно быть достаточно для ежедневного выполнения произвольной работы.

ХТХ,
Мартин

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

u003Cservlet servlet-name='hello'n servlet-class='test.HelloWorld'>
<загрузка при запуске/>
</сервлет>

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

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

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

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

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

45 8 * * * ПОЛУЧИТЬ http://www.domain.com/myBatch?securitykey=verysecret

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top