spring集成Quartz时区问题造成任务晚执行八小时

项目中在Spring中集成了Quartz,配置的每日凌晨执行的定时任务都是到了八点多才执行,经过一番查找,可能是时区问题造成的。

  • 一种解决办法是在JVM启动参数中增加 --Duser.timezone=GMT+08
  • 另一种办法是在配置文件中增加timeZone的配置

改JVM参数的方式,一但项目迁移实施人员可能会忘记改,所以决定再代码里做手脚。

1、获取一个TimeZone,使用java.util.TimeZone.getTimeZone(String ID)获取指定的TimeZone,ID有两种形式,一种为完整名称例如“America/Los_Angeles”、“Asia/Shanghai”,或者一个自定义ID比如“GMT-8:00”

Spring配置如下

<bean id="timeZone" class="java.util.TimeZone" factory-method="getTimeZone">
  <constructor-arg>
    <value>GMT+8:00</value>
  </constructor-arg>
</bean>

2、给TriggerBean注入

 <bean id="testJob" class="org.eu.raybit..jobs.TestJob" />
 <bean id="testJobMethod"   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
   <property name="targetObject">
     <ref bean="testJob" />
   </property>
   <property name="targetMethod">
     <value>execute</value>
   </property>
</bean><bean id="testJobTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="testJobMethod"></property>
  <property name="cronExpression" value="0 0 0 1/1 * ? "></property>
  <property name="timeZone" ref="timeZone"/>
</bean>

原文地址:https://www.cnblogs.com/raym/p/9473539.html

时间: 2024-08-26 00:17:03

spring集成Quartz时区问题造成任务晚执行八小时的相关文章

spring集成quartz

spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class" Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成

Spring集成Quartz定时器

<!-- Spring集成Quartz开始 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list>

使用Spring集成Quartz

Quartz: Quartz调度包的两个基本单元是作业(Job)和触发器(Trigger).作业是能够调度的可执行任务,触发器提供了对作业的调度.虽然这两个实体很容易合在一起,但在Quartz中将它们分离开来是有原因的,而且也很有益处.通过把要执行的工作与它的调度分开,Quartz允许在不丢失作业本身或作业的上下文的情况下,修改调度触发器.而且,任何单个的作业都可以有多个触发器与其关联 使用Spring集成Quartz: 本系统使用Spring来集成Quartz.我们只需要在Spring中配置相

Quartz学习总结(1)——Spring集成Quartz框架

一.Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序.Jobs可以做成标准的Java组件或 EJBs.Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz 允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,

spring集成quartz实现定时任务

定时器jar引入 <dependency>    <groupId>org.quartz-scheduler</groupId>    <artifactId>quartz</artifactId>    <version>2.3.0</version></dependency> spring配置quartz的xml <beans xmlns="http://www.springframewor

Spring集成Quartz的3种方式

1.使用xml配置方式 Maven依赖 <properties> <!-- spring版本号 --> <spring.version>4.2.2.RELEASE</spring.version> <!-- Quartz的版本 --> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>

(2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍. 一.增加所依赖的JAR包1.增加Spring的Maven依赖 <dependency> <groupId>org

【Spring】Spring集成Quartz

maven引入所需的jar包: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.2</version> </dependency> <dependency>         <groupId>org.springframework</g

Spring集成Quartz定时器实现定时作业任务

这篇文章有点久远了,记得是第一次出来实习时,大三暑假自己找了一家软件公司实习了很长时间,当时学到很多实践性的东西,这个Quartz就是其中一个,还记得是做OA,一些消息需要定时提醒定时删除,项目框架里也没有,当时经验不足也没接触过这样类似的东西,所以用了整一下午的时间算是基本搞定了吧,今天很有兴致,找出这篇大学时写过的几篇文章分享出来,内容如下: 1. 创建一个定时任务并继承类QuartzJobBean并实现其方法executeInternal(JobExecutionContext conte