quartz在web.xml的配置

时间:2023-03-10 02:29:07
quartz在web.xml的配置

第一步:下载所需的Jar包 
commons-beanutils.ja、commons-collections.jar、commons-logging.jar、commons-digester.jar、quartz.jar包 
第二步:在web.xml下配置监听 
在web.xml下配置监听的目的是为了项目编译的时候就自动运行监听下配置的业务类。

<!--监听(作用就是启动项目的时候就会运行这个类,这个类需要实现ServletContextListener接口)-->
<listener>
<listener-class>
com.qt.quartz.QuartzMain
</listener-class>
</listener>

第三步:编写com.qt.quartz.QuartzMain类 
这个类只是作为启动类,调用QuartzLoad类的2个方法,因为这个类是静态的,所以可以用名称直接点出方法名称。

package com.qt.quartz;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class QuartzMain 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();
}
} }

第四步:编写com.qt.quartz.QuartzLoad类 
这个类里面有2个方法,一个是启动quartz的方法,一个是关闭方法,这个类里面可以定制每隔多少时间循环调用业务类一次。

package com.qt.quartz;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory; public class QuartzLoad {
private static Scheduler sched;
public static void run() throws Exception {
//创建LzstoneTimeTask的定时任务
//三个参数,第一个是自己取得名称、第二个是固定的、第三个是业务类
JobDetail jobDetail = new JobDetail("lzstoneJob",sched.DEFAULT_GROUP,QuartzJob.class);
//三个参数,第一个是自己取得名称、第二个是触发器组名称、第三个是自定义时间
CronTrigger trigger = new CronTrigger("lzstoneTrigger","lzstone","0/50 * * * * ?");
sched = new StdSchedulerFactory().getScheduler();
sched.scheduleJob(jobDetail,trigger);
sched.start();
}
//停止
public static void stop() throws Exception{
sched.shutdown();
}
}

序号 说明 是否必填 允许填写的值 允许的通配符 
1 秒 是 0-59 , - * / 
2 分 是 0-59 , - * / 
3 小时 是 0-23 , - * / 
4 日 是 1-31 , - * ? / L W 
5 月 是 1-12 or JAN-DEC , - * / 
6 周 是 1-7 or SUN-SAT , - * ? / L # 
7 年 否 empty 或 1970-2099 , - * /

第五步:编写QuartzJob.class类,自己的业务处理类

package com.qt.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class QuartzJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println("时间表:"+sdf.format(new Date()));
}
}