一、导入quartz包
二、增加两个必须的配置文件。
1、quartz.properties 该配置文件被StdSchedulerFactory.java自动加载
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1
org.quartz.threadPool.threadPriority = 4
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName =quartz_job.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
2、quartz.xml 该配置文件主要配置任务
<?xml version="1.0" encoding="UTF-8"?>
<quartz>
<!-- 一个月跑一次 -->
<job>
<job-detail>
<name>SynchronizeInnoutMapJob</name>
<group>job</group>
<job-class>com.ideal.Timer.SynchronizeInnoutMapJob</job-class>
</job-detail>
<trigger>
<cron>
<name>t2</name>
<group>job</group>
<job-name>SynchronizeInnoutMapJob</job-name>
<job-group>job</job-group>
<cron-expression>0 0 8 1 * ?</cron-expression> <!--表示问号年,*号月,1日,8点0分0秒执行任务-->
</cron>
</trigger>
</job>
</quartz>
3、添加一个监听器,并且在web.xml配置
<listener>
<listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class><!--包自带的--></listener>
4.创建实现类 implements org.quartz.Job
public void execute(JobExecutionContext arg0) throws JobExecutionException {
if (!isRunning) {
//执行任务}
}
5.完毕.该定时器会在servlet服务器启动的时候加载
附录:手写的加载架包类
package quartz.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import com.ideal.longconnection.scheduler.Scheduler;
//此类来自互联网
public class QuartzInitListener implements ServletContextListener {
private static Logger logger = Logger.getLogger(QuartzInitListener.class);
private static int rebootCount = 0;
public void contextDestroyed(ServletContextEvent context) {
// TODO Auto-generated method stub
logger.info( " Quartz job destroying start !!! " );
destroyedQuartz(context);
logger.info( " Quartz job destroying end !!! " );
logger.info( " Quartz 定时任务 结束 !!! " );
}
public void contextInitialized(ServletContextEvent context) {
// TODO Auto-generated method stub
logger.info( " Quartz job initing start !!! " );
boolean flag = false;
try{
while(rebootCount<10 && !(flag=initQuartz(context))){
logger.info( " initing failed !!! " );
Thread.sleep(1000L*10);//启动失败后 10秒重启
logger.info( " Quartz job reboot --> timeCount="+(++rebootCount) );
}
}catch(InterruptedException ie){
logger.error( " Quartz job initing Exception "+ ie.getMessage());
}catch(Exception ex){
logger.error( " Quartz job initing Exception "+ ex.getMessage());
}
logger.info( " Quartz job initing "+(flag?"successful":"failed")+" !!! " );
}
/**
* 初始化
* @param context
* @return
*/
public boolean initQuartz(ServletContextEvent context){
boolean flag = false;
try {
Scheduler scheduler = (Scheduler)context.getServletContext().getAttribute("scheduler");
scheduler = (Scheduler) (scheduler==null?StdSchedulerFactory.getDefaultScheduler():scheduler);
// if(scheduler.i==false){
// scheduler.start();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String[] names = scheduler.getTriggerNames("job");
// for(int i=0;i<names.length;i++){
// Trigger t = scheduler.getTriggersOfJob(names[i], "job")[0];
// System.out.println(t.getName() + " ----- "+sdf.format(t.getNextFireTime()));
// }
// }
context.getServletContext().setAttribute("scheduler", scheduler);
flag = true;
} catch (SchedulerException e) {
logger.error( " Quartz job initing Exception "+ e.getMessage());
} catch(Exception e){
logger.error( " Quartz job initing Exception "+ e.getMessage());
}
return flag;
}
/**
* 终止任务
* @param context
* @return
*/
public boolean destroyedQuartz(ServletContextEvent context){
boolean flag = false;
try {
Scheduler scheduler = (Scheduler)context.getServletContext().getAttribute("scheduler");
scheduler = (Scheduler) (scheduler==null?StdSchedulerFactory.getDefaultScheduler():scheduler);
//
// scheduler.
// if( scheduler.isStarted()==true){
// scheduler.shutdown();
// }
flag = true;
} catch (SchedulerException e) {
// TODO Auto-generated catch block
logger.error( " Quartz job destroying Exception "+ e.getMessage());
} catch(Exception e){
logger.error( " Quartz job destroying Exception "+ e.getMessage());
}
return flag;
}
}