2013-10-25 2 views
0

Я запланировал задания кварца, используя весенний контекст приложения для запуска каждую ночь. Теперь я хочу изменить задание cron для уже запущенного приложения, так что он запускается через час. Мы хотим изменить задание cron в контексте приложения, а затем перезапустить приложение, чтобы изменения вступили в силу. У нас нет доступа к базе данных по соображениям безопасности.Загрузка задания Quartz cron из контекста приложения Springs каждый раз

Я использую CronTriggerBean, чтобы запустить jobDetail, а также предоставить выражение cron. Теперь, если я изменяю выражение cron и перезапускаю приложение, оно не обновляет фактическое выражение cron, потому что оно хранится в базе данных.

Как я могу убедиться, что выражение cron обновляется каждый раз, когда я перезапускаю приложение?

Редактировать: Кварц берет выражение cron из контекста приложения и сохраняет его внутри базы данных. После перезапуска приложения с новым выражением cron он не обновляет значение в базе данных и продолжает использовать старое выражение.

ответ

0

Вы можете опубликовать один JMX службы Quartz Scheduler, который позволяет изменить это во время выполнения более легкой:

http://quartz-scheduler.org/api/2.2.0/org/quartz/core/jmx/QuartzSchedulerMBean.html

Вы можете включить эту функцию с этим свойством (в ваших quartz.properties):

org.quartz.scheduler.jmx.export = true 

А затем вы можете открыть консоль jmx для просмотра службы jmx кварца.

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

0

, что я понял из вашего вопроса, вы, возможно, ниже конфигурации в контексте приложений

<property name="cronExpression" value="${cron expression}" /> 

вы экстернализированы т.е. ваше выражение хрон, в вашем случае базы данных. поэтому вам нужно изменить базу данных, чтобы получить эффективную работу, где еще вы настроили выражение cron?

+0

Мы загружаем выражение cron из JNDI, из которого мы создаем bean-компонент, который мы ссылаемся в CronTriggerBean defenition. (отредактируйте нажатый ввод до начала) – Stijnvdk

+0

, тогда я не понимаю ваш вопрос, вы получаете выражение cron от jndi, тогда что вы имеете в виду «он не обновляет фактическое выражение cron, потому что он хранится в базе данных». если вы измените значение jdni для cron и перезапустите сервер, при перезапуске контекст приложения будет обновлен. –

+0

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