запускать периодические задачи на сервере в фоновом режиме - PullRequest
4 голосов
/ 19 января 2009

Какой лучший / самый простой способ запуска периодических задач (например, потока демона) на сервере tomcat / jetty? Как мне начать обсуждение? Есть простой механизм или это плохая идея вообще?

Ответы [ 5 ]

9 голосов
/ 19 января 2009

Если хотите сохранить все на стороне Java, взгляните на Кварц .
Он обрабатывает аварийное переключение и мелкозернистое перераспределение заданий с той же гибкостью, что и задания cron.

4 голосов
/ 19 января 2009

Хорошо и эффективно хранить экземпляр java.util.Timer (или, еще лучше, ScheduledExecutor) в вашем ServeletContext. Создайте его в вызове сервлета init (), и все ваши сервлеты могут добавить к нему TimerTasks.

2 голосов
/ 19 января 2009

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

0 голосов
/ 20 января 2009

Если вы хотите использовать задание cron, но не имеете административного доступа к системе разработки, вы можете выполнить пользовательский crontab, выполнив команду:

crontab -e

В большинстве систем он по умолчанию использует vi, но вы можете изменить его на выбранный вами редактор с помощью:

export EDITOR=/usr/local/bin/my_editor

Затем, выполнив команду crontab -e, вы запустите файл crontab в вашем редакторе. После сохранения изменения будут переданы обратно в cron системы.

0 голосов
/ 19 января 2009

Я не могу ответить на вопросы о кошках и молах, но я делал подобные вещи с веб-приложениями на основе Python.

Обычно я просто запускаю отдельное приложение, которое выполняет периодические задачи. Если требуется взаимодействие между веб-сайтом и приложением, такое взаимодействие может происходить через какой-то API (используя что-то вроде XML-RPC / unix-сокеты / и т. Д.) Или даже просто через уровень базы данных, если этого достаточно.

Надеюсь, это поможет.

...