zoukankan      html  css  js  c++  java
  • 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())); 
        }
    }
  • 相关阅读:
    js es6遍历对象的6种方法
    MySQL、Redis、MongoDB网络抓包工具
    SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化(C#自带函数的3到4倍速度)。
    设置EntityFramework中decimal类型数据精度问题(EF默认将只会保留到2为精度)
    IIS资料
    RabbitMQ
    微信公众平台生成带场景参数二维码
    .net Core资料
    微信字体放大影响布局的处理
    VirtualBox虚拟机下安装Win10性能优化
  • 原文地址:https://www.cnblogs.com/duex/p/6602333.html
Copyright © 2011-2022 走看看