每次从Springs应用程序上下文加载Quartz cron作业

时间:2013-10-25 07:20:52

标签: java spring applicationcontext

我使用spring应用程序上下文安排了每晚运行的quartz作业。现在我想更改已经运行的应用程序的cron作业,以便它在一小时后运行。我们想要在应用程序上下文中更改cron作业,然后重新启动应用程序以使更改生效。出于安全原因,我们无法访问数据库。

我使用CronTriggerBean运行jobDetail并提供cron表达式。现在,如果我更改cron表达式并重新启动应用程序,它就不会更新实际的cron表达式,因为它存储在数据库中。

如何在每次重新启动应用程序时确保更新cron表达式?

编辑: Quartz从应用程序上下文中获取cron表达式,并将其内部存储在数据库中。在使用新的cron表达式重新启动应用程序时,它不会更新数据库中的值并继续使用旧表达式。

2 个答案:

答案 0 :(得分:0)

您是否可以发布一个Quartz Scheduler的JMX服务,它允许在运行时更轻松地更改它:

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

您可以使用此属性启用此功能(在quartz.properties中):

org.quartz.scheduler.jmx.export = true

然后你可以打开你的jmxconsole来查看quartz jmx服务。

希望它有所帮助。

答案 1 :(得分:0)

我从您的问题中理解,您可能在应用程序上下文中具有以下配置

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

即你在你的案例数据库中外化了你的cron表达式。所以你需要在数据库中更改才能生效,否则你可以在哪里配置cron表达式?