標籤:想法 web.xml 業務 jobs 實現 obb bsp task ota
零、廢話:
離職四個多月,畢業辦完之後6月13日又回到公司上班,一直有想法把自己學的東西記錄整理分享做出來,一直沒動過,今天開始第一篇,這是今天項目上需要做個定時任務,臨時學的,quartz的功能還是很強大用起來也方便,這裡的demo只是實現每天定時執行一次,其他功能可以在此基礎上繼續深入學習,哈哈 睡覺,明天繼續。
一、maven依賴:
<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介面,監聽後啟動項目時的啟動類
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執行一次
從左至右分別表示 秒 分 時 日 月 周 年
?表示不關心 *表示每 年可以忽略不寫
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中就是自己的業務處理
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
<listener> <listener-class>com.thinkgem.jeesite.modules.sys.listener.TimingTaskSchedule</listener-class> </listener>
quartz定時執行任務,並配置web.xml