2008-09-16 4 views
2

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

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

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

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

ответ

5

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

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

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

0

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

сервлет-имя < сервлет = 'Привет' сервлет-класс = 'test.HelloWorld' >
< нагрузки на старте/>
</сервлет >

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

0

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

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

0

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

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

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

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

+0

Да, и вы регулярно добавлять его в каждый файл журнала, в котором перечислены доступ HTTP ... На самом деле, verysecret ... – 2008-09-18 20:34:42

+0

Она работает на моем собственном сервере, и я единственный, кто видит лог-файлы. Это просто, чтобы убедиться, что другие не начнут мою партию. То, что я хотел сделать здесь, это то, что вы можете использовать crontab для вызова сервлета. Защитите его так, как вы считаете, необходимым. Прекрасно подходит для меня. – boes 2008-09-24 22:49:59

1

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

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

Timer Service in J2EE 1.4 (EJB 2.1)

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

я бы не ввести другой library, если вы действительно не нужно. Служба таймера должна быть достаточной для выполнения произвольного задания на ежедневной основе.

НТН,
Martin

2

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

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

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

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