今天项目上需要做个定时任务,临时学的,quartz的功能还是很强大用起来也方便,这里的demo只是实现每天定时执行一次,其他功能可以在此基础上继续深入学习,哈哈 睡觉,明天继续。
一、maven依赖:
1
2
3
4
5
6
7
8
9
10
|
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version> 2.2 . 3 </version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version> 2.2 . 3 </version> </dependency> |
二、Doem:
TimingTaskSchedule需要实现ServletContextListener接口,监听后启动项目时的启动类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package com.thinkgem.jeesite.modules.sys.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class TimingTaskSchedule implements ServletContextListener{ // 服务器启动时执行该事件 @Override public void contextInitialized(ServletContextEvent arg0) { try { QuartzLoad.run(); } catch (Exception e) { e.printStackTrace(); } } // 服务器停止时执行该事件 @Override public void contextDestroyed(ServletContextEvent arg0) { try { QuartzLoad.stop(); } catch (Exception e) { e.printStackTrace(); } } } |
这里的 0 0 0 ? * * 表示每天00:00:00执行一次
从左到右分别表示 秒 分 时 日 月 周 年
?表示不关心 *表示每 年可以忽略不写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package com.thinkgem.jeesite.modules.sys.listener; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import com.thinkgem.jeesite.modules.sys.listener.job; public class QuartzLoad { private static Scheduler sched; public static void run() throws Exception { System.out.println( "定时任务启动" ); JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) job. class ) .withIdentity( "myjob" , "group1" ).build(); CronTrigger trigger =(CronTrigger) TriggerBuilder.newTrigger() .withIdentity( "trigger" , "group1" ) .withSchedule(CronScheduleBuilder.cronSchedule( "0 0 0 ? * *" )) .build(); SchedulerFactory sfact = new StdSchedulerFactory(); Scheduler schedule = sfact.getScheduler(); schedule.start(); schedule.scheduleJob(jobDetail, trigger); } //停止 public static void stop() throws Exception{ sched.shutdown(); } } |
Job中就是自己的业务处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package com.thinkgem.jeesite.modules.sys.listener; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class job implements Job{ public void execute(JobExecutionContext arg0) throws JobExecutionException { Date date= new Date(); SimpleDateFormat sf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); System.out.println( "Time:" +sf.format(date)); System.out.println( "Hello" ); } } } } |
三、web.xml监听:
com.thinkgem.jeesite.modules.sys.listener.TimingTaskSchedule
1
2
3
|
<listener> <listener- class >com.thinkgem.jeesite.modules.sys.listener.TimingTaskSchedule</listener- class > </listener> |
以上这篇quartz定时执行任务,并配置web.xml的操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。