在我们的Java应用程序中,我们具有Spring调度程序,其配置如下所示:
<task:scheduled-tasks>
<task:scheduled ref="myHealthCheck" method="getStatus" cron="0 0/5 * * * *"/>
</task:scheduled-tasks>
DST在11月3日结束期间,调度程序(每5分钟运行一次)没有运行一小时。在DST开始和结束期间可以帮助您解决这一问题吗?
谢谢 陕
在我们的Java应用程序中,我们具有Spring调度程序,其配置如下所示:
<task:scheduled-tasks>
<task:scheduled ref="myHealthCheck" method="getStatus" cron="0 0/5 * * * *"/>
</task:scheduled-tasks>
DST在11月3日结束期间,调度程序(每5分钟运行一次)没有运行一小时。在DST开始和结束期间可以帮助您解决这一问题吗?
谢谢 陕
这可能与时区配置有关。
您的主机的默认时区是什么?尝试运行System.out.println(TimeZone.getDefault())
进行检查。
如果默认时区不支持DST(例如UTC),则可以通过传递系统属性来为整个JVM设置正确的时区:
-Duser.timezone=Europe/Kiev
或者,您可以直接为计划任务指定时区。
不幸的是,Spring Task XSD没有用于定义时区(http://www.springframework.org/schema/task/spring-task-4.3.xsd)的属性。
但是您可以使用注释。从春季4开始,@Scheduled
注释具有一个新的zone
属性(https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling-annotation-support-scheduled):
您还可以使用
zone
属性指定解析cron表达式的时区。
@Scheduled(cron="*/5 * * * * MON-FRI",zone="Europe/Kiev")
public void doSomething() {
// something that should execute on weekdays only
}