1.schedule***ctory 例項化例項scheduler,才能使用。
2.每次使用前,都必須被例項化,一旦重啟,需要再次例項化
3.scheduler啟動,才有可能去執行觸發器,執行job.其實暫停狀態,也不會去執行。
4.quartz關鍵介面:
1.scheduler: 排程器介面
2.job:具體任務內容,由scheduler 執行的。
4.trigger:觸發job的執行,需要制定何種scheduler.常用型別:******trigger 和 crontrigger。目的在於復用job內容。
******trigger:特定時刻,或者延遲一段時間,重複執行n次。
crontrigger:定時執行。
5.jobbuilder :定義jobdetail,設定job 需要的資料。
6.triggerbuilder:定義trigger
複製**
5.scheduler啟動的例項,可以新增、刪除、暫停,job,trigger。
datebuilder 可用來建立特殊時間點date例項。
job 介面
public inte***ce job
複製**
其中jobexecutioncontext ,可以拿到觸發任務執行相關的,scheduler 例項、trigger 例項、jobdetail例項等
job 和trigger,用key區分,group類唯一,用group 歸類。group+key,唯一區分。
9.執行job excute方法前,建立job 例項,執行完畢,**job 例項。要求存在無引數構造方法。
jobdatamap實現了map介面,可儲存任意物件,便於job 執行使用。
// define the job and tie it to our dumbjob class
jobdetail job = newjob(dumbjob.class)
.withidentity("myjob", "group1") // name "myjob", group "group1"
.usingjobdata("jobsays", "hello world!")
.usingjobdata("myfloatvalue", 3.141f)
.build();
public class dumbjob implements job
public void execute(jobexecutioncontext context)
throws jobexecutionexception
} 複製**
11.從jobexecutioncontext中獲取資料
public class dumbjob implements job
public void execute(jobexecutioncontext context)
throws jobexecutionexception
} //新增屬性,並設定set方法,job中自動可以獲取資料,更簡潔。
public class dumbjob implements job
public void execute(jobexecutioncontext context)
throws jobexecutionexception
public void setjobsays(string jobsays)
public void setmyfloatvalue(float myfloatvalue)
public void setstate(arraylist state)
}複製**
12.job 中新增的註解
@disallowconcurrentexecution 存放job 配置資料的detail只有乙個
@persistjobdataafterexecution 持久化配置資料。要求配合上方註解,避免併發覆蓋。
13.job 屬性
durability 配置是否自動刪除,在沒有trigger關聯時候。
requestsrecovery 宕機能夠重新恢復
14.job trigger通用屬性
jobkey :job 唯一標識
starttime:job 開始時間
endtime: job 終止時間
priority: 優先順序 。起始時間相同時候才生效。
15.失敗指令:
觸發器不同,失敗指令也不盡相同。
16 日曆物件可復用
holidaycalendar cal = new holidaycalendar();
cal.addexcludeddate( somedate );
cal.addexcludeddate( someotherdate );
sched.addcalendar("myholidays", cal, false);
trigger t = newtrigger()
.withidentity("mytrigger")
.forjob("myjob")
.withschedule(dailyathourandminute(9, 30)) // execute job daily at 9:30
.modifiedbycalendar("myholidays") // but not on holidays
.build();
// .. schedule job with trigger
trigger t2 = newtrigger()
.withidentity("mytrigger2")
.forjob("myjob2")
.withschedule(dailyathourandminute(11, 30)) // execute job daily at 11:30
.modifiedbycalendar("myholidays") // but not on holidays
.build();
// .. schedule job with trigger2
複製**
quartz個人簡單理解
乙個簡單的任務類實現job介面 該類只包含了要執行的任務內容,不包含該任務的name或者屬於哪個組,也不包含如何去執行任務,比如什麼時候開始,執行幾次,執行間隔。jobdetail實現了job例項類的自生資訊,比如name,所屬的組,quartz每次執行任務都會新建乙個job例項,而不是一直使用同乙...
談談你對aja的理解 一 二
什麼是ajax ajax是asynchronous j ascript and xml的縮寫,這一技術能夠向伺服器請求額外的資料而無需解除安裝整個頁面,會帶來良好的使用者體驗。傳統的http請求流程大概是這樣的,瀏覽器向伺服器傳送請求 伺服器根據瀏覽器傳來資料生成response 伺服器把respo...
Quartz教程一 使用quartz
scheduler在使用之前需要例項化。一般通過schedule ctory來建立乙個例項。有些使用者將factory的例項儲存在jndi中,但直接初始化,然後使用該例項也許更簡單 見下面的示例 scheduler例項化後,可以啟動 start 暫停 stand by 停止 shutdown 注意 ...