Кварц в Webapplication

У меня есть вопрос в планировании заданий в веб-приложении. Если мы должны запланировать задания в веб-приложении, мы можем или использовать java util Timer/TimerTask или Кварц (существует также другой механизм планирования, но я рассмотрел Кварц). Я рассматривал, какой использовать, когда я поразил сайт http://oreilly.com/pub/a/java/archive/quartz.html?page=1, в котором говорится, что использование таймера имеет плохой эффект, поскольку это создает поток, который находится вне контроля контейнерами в последней строке. Другие страницы обсуждают Кварц и его возможности, но я могу читать, что Кварц также использует поток и/или пул потоков для планирования задач. Мое предположение - то, что эти потоки также не находятся под контролем контейнерами

Кто-либо может разъяснить, что это мне - это безопасный использовать Кварц в моих веб-приложениях, не создавая зависающие потоки или проблемы блокировки потока?Заранее спасибо

5
задан JKV 14 April 2010 в 14:20
поделиться

3 ответа

Кто-нибудь может пояснить мне это. Безопасно ли использовать Quartz в моих веб-приложениях без создания зависающих потоков или проблем с блокировкой потоков?

И кварц, и Таймер JDK запускает неуправляемые потоки, у которых нет доступа к контекстной информации Java EE, и это самая большая проблема. Кроме того, они могут использовать ресурсы без ведома [сервера приложений], существовать без возможности администратора контролировать их количество и использование ресурсов и препятствовать способности сервера приложений корректно завершать работу или восстанавливать ресурсы после сбоя (см. Неуправляемые потоки ).

При этом я не сталкивался с зависанием потоков или проблемами с блокировкой (хотя, думаю, это зависит от того, что вы с ними делаете).

Если это действительно беспокоит, рассмотрите возможность использования JSR-237 Таймер и реализация WorkManager (которая работает с управляемым потоком), например Foo-CommonJ вместо кварца или таймера JDK.

2
ответ дан 15 December 2019 в 00:55
поделиться

Оба подхода создавали неуправляемые потоки. Я использую Quartz для планирования, а не java Timer, поскольку он предлагает большую гибкость (например, выражения cron) и более управляемый.

1
ответ дан 15 December 2019 в 00:55
поделиться

Если мне нужно сказать одной строкой, я бы сказал, что используйте Quartz, так как он позаботится об управлении низкоуровневой работой, связанной с планированием. С помощью Timer вы можете делать все, что делает кварц (даже заставлять потоки таймера продолжать опрашивать, чтобы проверить, запущено ли веб-приложение, и выйти в противном случае). Но это должно быть сделано вами в вашем коде. С Quartz вы получаете все это из коробки.

Теперь подробности Quartz предоставляет 1. Постоянство работы 2. Управляемый пул потоков, чтобы вы создали соответствующее количество потоков и заставили задания ждать после этого. 3. Сервлет инициализации для интеграции с вашим веб-приложением.Когда приложение закрывается, я думаю, что оно закрывает ваши потоки, но я не пробовал. Так что я бы не стал это комментировать. 4. Планирование на основе RMI для кластерных сред.

Есть и другие, но именно они были главными мотивами того, почему люди чаще используют кварц.

1
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: