在我们的Java应用程序中,我们有Spring调度程序,配置如下所示:
<task:scheduled-tasks>
<task:scheduled ref="myHealthCheck" method="getStatus" cron="0 0/5 * * * *"/>
</task:scheduled-tasks>在11月3日DST结束时,调度程序(每5分钟运行一次)没有运行一小时。在DST开始和结束期间,有人能帮助处理这个问题吗?
谢陕
发布于 2019-11-12 08:12:30
这可能与时区配置有关。主机的默认时区是什么?试着运行System.out.println(TimeZone.getDefault())来检查。
如果默认时区不支持DST (例如UTC),则可以通过传递系统属性为整个JVM设置正确的时区:
-Duser.timezone=Europe/Kiev或者,您可以直接为计划的任务指定时区。
不幸的是,Spring没有定义时区(http://www.springframework.org/schema/task/spring-task-4.3.xsd)的属性。
但您可以使用注释。从Spring 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
}https://stackoverflow.com/questions/58811575
复制相似问题