Quartz也常用在Web應(yīng)用中,常見的是交由Spring托管的形式,但這里并非介紹這個(gè)。這里介紹Quartz在Web應(yīng)用中單獨(dú)使用。我們看下本章的大綱:
(1)大體思路說明;
(2)新建一個(gè)Web Project;
(3)創(chuàng)建一個(gè)Job;
(4)創(chuàng)建一個(gè)ApplicationContextListener;
(5)常用的Cron Schedule;
接下來看下具體的內(nèi)容:
(1)大體思路說明;
一般來說,Web應(yīng)用啟動(dòng)時(shí),應(yīng)注冊(cè)已經(jīng)確定的定時(shí)任務(wù);一些動(dòng)態(tài)的、未確定觸發(fā)時(shí)間的定時(shí)任務(wù),后續(xù)可通過靜態(tài)的Scheduler注冊(cè)。
所以我們創(chuàng)建一個(gè)Web項(xiàng)目,在ServerContextListener初始化的時(shí)候,添加我們的定時(shí)定時(shí)任務(wù)調(diào)度器,在銷毀的時(shí)候,關(guān)閉任務(wù)調(diào)度器。
(2)新建一個(gè)Web Project;
新建一個(gè)web maven project。
在pom.xml文件中添加依賴:
<groupId>org.quartz-scheduler<span class="hljs-name"groupId>
<artifactId>quartz<span class="hljs-name"artifactId>
<version>2.2.3<span class="hljs-name"version>
javax.servlet
servlet-api
3.1-b02
(3)創(chuàng)建一個(gè)Job;
創(chuàng)建一個(gè)實(shí)現(xiàn)Job類的Class取名為HelloJob,代碼如下:
package com.kfit.job;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
- 任務(wù)類.
- @author Angel --守護(hù)天使
- @version v.0.1
- @date 2017年4月21日
*/
**public **class HelloJob implements Job{
**public ****void** execute(JobExecutionContext context) **throws **JobExecutionException {
// 執(zhí)行響應(yīng)的任務(wù).
System. ***out*** .println("HelloJob.execute,"+**new** Date());
}
}
(4)創(chuàng)建一個(gè)ApplicationContextListener;
新建一個(gè)實(shí)現(xiàn)ServletContextListener的類ApplicationContextListener,代碼如下:
package com.kfit.job;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
@WebListener
**public **class ApplicationContextListener implements ServletContextListener{
**private** Scheduler scheduler = **null** ;
**public ****void** contextInitialized(ServletContextEvent arg0) {
**try** {
/*
*在 Quartz 中, scheduler 由 scheduler 工廠創(chuàng)建:DirectSchedulerFactory 或者 StdSchedulerFactory。第二種工廠 StdSchedulerFactory 使用較多,
*因?yàn)?DirectSchedulerFactory 使用起來不夠方便,需要作許多詳細(xì)的手工編碼設(shè)置。
*/
// 獲取Scheduler實(shí)例
scheduler = StdSchedulerFactory. *getDefaultScheduler* ();
scheduler.start();
System. ***out*** .println("scheduler.start");
System. ***out*** .println(scheduler.getSchedulerName());
//具體任務(wù).
JobDetail jobDetail = JobBuilder. *newJob* (HelloJob. **class** ).withIdentity("job1","group1").build();
//觸發(fā)時(shí)間點(diǎn). (每5秒執(zhí)行1次.)
SimpleScheduleBuilder simpleScheduleBuilder =SimpleScheduleBuilder. *simpleSchedule* ().withIntervalInSeconds(5).repeatForever();
Trigger trigger = TriggerBuilder. *newTrigger* ().withIdentity("trigger1","group1").startNow().withSchedule(simpleScheduleBuilder).build();
// 交由Scheduler安排觸發(fā)
scheduler.scheduleJob(jobDetail,trigger);
} **catch** (SchedulerException e) {
e.printStackTrace();
}
}
**public ****void** contextDestroyed(ServletContextEvent arg0) {
**try** {
scheduler.shutdown();
} **catch** (SchedulerException e) {
e.printStackTrace();
}//關(guān)閉定時(shí)任務(wù)調(diào)度器.
}
}
(5)常用的Cron Schedule;
相對(duì)于其他方式定義定時(shí)任務(wù)的觸發(fā)時(shí)間,我們較常用Cron Schedule:
// 具體任務(wù)
JobDetail job = JobBuilder.newJob(HelloJob. **class** ).withIdentity("job1", "group1").build();
// 觸發(fā)時(shí)間點(diǎn)
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0 * * * * ? *");
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(cronScheduleBuilder).build();
// 交由Scheduler安排觸發(fā)
scheduler.scheduleJob(job, trigger);
-
Web
+關(guān)注
關(guān)注
2文章
1287瀏覽量
71422 -
Quartz
+關(guān)注
關(guān)注
0文章
7瀏覽量
8096 -
spring
+關(guān)注
關(guān)注
0文章
340瀏覽量
15074
發(fā)布評(píng)論請(qǐng)先 登錄
智能手表Quartz
怎么在Web頁面中實(shí)現(xiàn)簡單的按鈕按壓?
web服務(wù)器在監(jiān)控系統(tǒng)設(shè)計(jì)中的應(yīng)用技巧有哪些?
Java在基于WEB的嵌入式系統(tǒng)中的應(yīng)用
基于Web Service 的GIS在農(nóng)業(yè)中的應(yīng)用
Web技術(shù)在智能建筑中央空調(diào)中的應(yīng)用
Quartz DRC和Quartz LVS:最快速的全線性物
在嵌入式 Linux 智能設(shè)備中采用 Web 支持

spring4.0如何整合Quartz實(shí)現(xiàn)任務(wù)調(diào)度詳細(xì)資料和程序說明

如何使用spring4.0整合Quartz實(shí)現(xiàn)動(dòng)態(tài)任務(wù)調(diào)度的程序資料說明

web開發(fā)中django快速使用指南

評(píng)論