北大青鸟中博
邮箱:注册@zbaccp.com 登录
在线报名 | 成绩查询 | 中博南京校区 | 中博技术论坛 |
北大青鸟徐州中博大学生就业方案 在职、转行、待业人员就业方案 北大青鸟中博校区环境 徐州北大青鸟高中、中专、职高生就业解决方案
您的位置:新闻动态 - 行业新闻

Quartz官方文档汉化教程_003
作者:张帅 出处:徐州中博 时间:2008-11-16
今天话不多说了,有了前2章基础,相信你已经有了基础了,直接贴代码了!
懒惰的人直接下载吧 http://bbs.zbaccp.com/viewthread.php?tid=8305&page=1&extra=page%3D1
1.SimpleJob.java
package com.zbaccp;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* <p>
* 这是一个要被反复触发执行的作业
* </p>
*
* @author 张帅
*/
public class SimpleJob implements Job {
    private static Log _log = LogFactory.getLog(SimpleJob.class);
    /**
     * 需要一个空的构造函数,调度器在调度的时候可以用这个构造函数初始化对象
     */
    public SimpleJob() {
    }
    public void execute(JobExecutionContext context)
        throws JobExecutionException {
        // 这个作业只是简单的打印作业名和具体的执行时间
        String jobName = context.getJobDetail().getFullName();
        _log.info("作业名: " + jobName + " 在 " + new Date()+" 执行");
    }
}

2.CronTriggerExample.java
package com.zbaccp;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.impl.StdSchedulerFactory;

/**
* 这个例子展示了所有的Cron Triggers这个触发器的调度基本能力
* @author 张帅
*/
public class CronTriggerExample {


    public void run() throws Exception {
        Log log = LogFactory.getLog(CronTriggerExample.class);

        log.info("------- 初始化 -------------------");
        // First we must get a reference to a scheduler
        SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler sched = sf.getScheduler();

        log.info("------- 初始化结束 --------");
        log.info("------- 调度作业 ----------------");
        // 作业将在sched.start()方法执行后被调度
        // 作业1将每20秒执行一次
        JobDetail job = new JobDetail("作业1", "工作组1", SimpleJob.class);
        CronTrigger trigger = new CronTrigger("触发器1", "工作组1", "作业1",
                "工作组1", "0/20 * * * * ?");
        sched.addJob(job, true);
        Date ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());

        // 作业2将每分钟过15秒执行一次
        job = new JobDetail("作业2", "工作组1", SimpleJob.class);
        trigger = new CronTrigger("触发器2", "工作组1", "作业2", "工作组1",
                "15 0/2 * * * ?");
        sched.addJob(job, true);
        ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());

        // 作业3每分钟执行1次,但是被限制在早晨8点到晚上5点间执行
        job = new JobDetail("作业3", "工作组1", SimpleJob.class);
        trigger = new CronTrigger("触发器3", "工作组1", "作业3", "工作组1",
                "0 0/2 8-17 * * ?");
        sched.addJob(job, true);
        ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());

        // 作业4枚3分钟执行1次但被限制在晚上5点到11点执行
        job = new JobDetail("作业4", "工作组1", SimpleJob.class);
        trigger = new CronTrigger("触发器4", "工作组1", "作业4", "工作组1",
                "0 0/3 17-23 * * ?");
        sched.addJob(job, true);
        ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());

        // 作业5将在每个月1号到15号的每天早上10点执行
        job = new JobDetail("作业5", "工作组1", SimpleJob.class);
        trigger = new CronTrigger("触发器5", "工作组1", "作业5", "工作组1",
                "0 0 10am 1,15 * ?");
        sched.addJob(job, true);
        ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());


        //作业6在周一到周五每30秒执行1次
        job = new JobDetail("作业6", "工作组1", SimpleJob.class);
        trigger = new CronTrigger("触发器6", "工作组1", "作业6", "工作组1",
                "0,30 * * ? * MON-FRI");
        sched.addJob(job, true);
        ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());


        //作业7只在周末(周六周日)每30秒执行一次
        job = new JobDetail("作业7", "工作组1", SimpleJob.class);
        trigger = new CronTrigger("触发器7", "工作组1", "作业7", "工作组1",
                "0,30 * * ? * SAT,SUN");
        sched.addJob(job, true);
        ft = sched.scheduleJob(trigger);
        log.info(job.getFullName() + " 已经执行 时间: " + ft
                + " 执行次数会按照表达式来执行: "
                + trigger.getCronExpression());

        log.info("------- 开始调度 ----------------");
        //所有作业都已经加入调度器,但是如果调度器不启动的话,没有一个作业会执行
        sched.start();

        log.info("------- 开始调度 -----------------");
        log.info("------- 等5分钟... ------------");
        try {
            // 5分钟时间让调度执行
            Thread.sleep(300L * 1000L);
            // 执行中...
        } catch (Exception e) {
        }

        log.info("------- 关闭调度 ---------------------");
        sched.shutdown(true);
        log.info("------- 关闭结束 -----------------");
        SchedulerMetaData metaData = sched.getMetaData();
        log.info("执行了 " + metaData.numJobsExecuted() + " 作业.");

    }
    public static void main(String[] args) throws Exception {
        CronTriggerExample example = new CronTriggerExample();
        example.run();
    }

}


>>更多新闻

前一篇:Quartz官方文档汉化教程_002b

 
在线咨询  
黄老师 陆老师
韩老师 值班老师
中心简介
校区简介
校区环境
关于北大青鸟
特色优势
常见问题解答
 
 
ACCP软件工程师课程
什么是ACCP
ACCP5.0课程介绍
各课程定位与特色
各阶段课程
教学模式
ACCP5.0课程体系
ACCP认证证书
 
 
北大青鸟全国免费服务电话:400-887-5191(我要就业)  800-828-5191
  徐州北大青鸟报名咨询电话:0516 - 85628888 85629999 黄老师 陆老师
地址:徐州市解放南路181科技培训中心(六中对面)
乘车路线:11、19、20、65、39、60、51、64、609、游1、游2至和平路六中站下 苏ICP备08102142号