0

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

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

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

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

4

2 回答 2

0

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

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

即,您在案例数据库中外部化了您的 cron 表达式。所以你需要改变数据库才能生效,还有哪里配置了 cron 表达式?

于 2013-10-25T08:17:33.717 回答
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 以查看石英 jmx 服务。

希望能帮助到你。

于 2013-10-25T07:58:53.867 回答