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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM