最近在 開發中 要使用定時器進行 做伺服器定時任務 廢話不多說:
框架 ssm+dubbo
quartzjar 包
org.quartz-schedulergroupid>
quartzartifactid>
2.2.3version>
dependency>
public
class videourlservice
public
void
setvideoservice(videoservice videoservice)
public
void
getallvideourl() throws exception
}integer flag = videoservice.updatevidellist4list(list);
if (flag > 0) else
}} catch (exception e)
}
需要注意的是: 當任務執行發生錯誤的時候怎麼辦?
quartz 提供了兩種方案: 1 立即重新執行任務 (這種只會停止當前任務執行)2. 立即停止所有相關這個任務的觸發器 (該任務的觸發器被停止後不會進行再被觸發)
那麼怎麼解決呢?
1 立即重新執行任務:
(注意看**注釋)
try catch (exception e)
2 立即終止該任務執行
(注意看**注釋)
try catch (exception e)
2. 在 spring 的配置檔案中進行配置
// 配置要執行的任務類
id="videourlservice"
class="com.spacexplore.videourlservice">
name="videoservice"
ref="videoservice">
property>
bean>
//定義觸發任務
id="videourljob"
class="org.springframework.scheduling.quartz.methodinvokingjobdetailfactorybean">
name="targetobject">
bean="videourlservice"/>
property>
name="targetmethod"
value="getallvideourl"/>
bean>
// 定義排程觸發器
id="videourltrigger"
class="org.springframework.scheduling.quartz.crontrigge***ctorybean">
name="jobdetail"
ref="videourljob">
property>
name="cronexpression">
0 0/5 * * * ?value>//這裡做測試我們設定為每5分鐘進行請求網易雲
property>
bean>
// 定義排程工廠類
id="schedule***ctory"
class="org.springframework.scheduling.quartz.schedule***ctorybean"
lazy-init="false"
autowire="no">
name="triggers">
bean="ldcodetrigger" />
bean="videourltrigger"/>
list>
property>
bean>
** 值得一提的是:
1.lazy-init 如果設定為 true,這任務工程在伺服器啟動時不會載入。所以這裡必須設定為 false。
2. 由於在上邊的配置中定義的了 default-autowire=」byname」, spring 會自動注入 quartz 中的 datasource bean,所以會報異常。 解決方法:在 bean 中關掉 autowired**
Quartz的定時器
quartz在指定的時間執行 很強大的 定時執行機制 1 定義上班鬧鐘定時類 如下 package timer 開始上班,這個程式要求每天 非週末 早晨八點需要啟動一次 author sam public class startworkjob 看到了嗎,這個類 startworkjob 並沒有繼承任...
quartz定時器使用
quartz和spring整合,需要配置schedule ctorybean用來產生stdscheduler 首先使用schedule ctory得到scheduler,我們的任務時乙個實現job介面的類,而真正被排程使用的是jobdetail 剩下的就是使用觸發器trigger,常用兩種觸發器 t...
Java定時器和Quartz
自定義乙個定時器 author lw public class mytimer extends thread override public void run catch interruptedexception e send 開始執行任務 public void execute 定時任務 priv...