欢迎来到天天文库
浏览记录
ID:14831072
大小:87.58 KB
页数:9页
时间:2018-07-30
《用 quartz 进行作业调度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用Quartz进行作业调度简介:Quartz是个开放源码项目,提供了丰富的作业调度集。在这篇文章中,软件工程师MichaelLipton和IT架构师SoobaekJang对QuartzAPI进行了介绍,从对框架的一般概述开始,并以一系列展示Quart基本特性的代码示例作为结束。在阅读完本文并看过代码示例后,您应当能够把Quartz的基本特性应用到任何Java™应用程序中。示例1:作业通过实现org.quartz.job接口,可以使Java类变成可执行的。清单1提供了Quartz作业的一个示例。这个类用一条非常简单的输出
2、语句覆盖了execute(JobExecutionContextcontext)方法。这个方法可以包含我们想要执行的任何代码(所有的代码示例都基于Quartz1.5.2,它是编写这篇文章时的稳定发行版)。清单1.SimpleQuartzJob.javapackagecom.ibm.developerworks.quartz;importjava.util.Date;importorg.quartz.Job;importorg.quartz.JobExecutionContext;importorg.quartz.Job
3、ExecutionException;publicclassSimpleQuartzJobimplementsJob{publicSimpleQuartzJob(){}publicvoidexecute(JobExecutionContextcontext)throwsJobExecutionException{System.out.println("InSimpleQuartzJob-executingitsJOBat"+newDate()+"by"+context.getTrigger().getName());}
4、}请注意,execute方法接受一个JobExecutionContext对象作为参数。这个对象提供了作业实例的运行时上下文。特别地,它提供了对调度器和触发器的访问,这两者协作来启动作业以及作业的JobDetail对象的执行。Quartz通过把作业的状态放在JobDetail对象中并让JobDetail构造函数启动一个作业的实例,分离了作业的执行和作业周围的状态。JobDetail对象储存作业的侦听器、群组、数据映射、描述以及作业的其他属性。示例2:简单触发器触发器可以实现对任务执行的调度。Quartz提供了几种不同的
5、触发器,复杂程度各不相同。清单2中的SimpleTrigger展示了触发器的基础:清单2.SimpleTriggerRunner.javapublicvoidtask()throwsSchedulerException{//InitiateaScheduleFactorySchedulerFactoryschedulerFactory=newStdSchedulerFactory();//RetrieveaschedulerfromschedulefactorySchedulerscheduler=schedulerF
6、actory.getScheduler();//currenttimelongctime=System.currentTimeMillis();//InitiateJobDetailwithjobname,jobgroup,andexecutablejobclassJobDetailjobDetail=newJobDetail("jobDetail-s1","jobDetailGroup-s1",SimpleQuartzJob.class);//InitiateSimpleTriggerwithitsnameandgr
7、oupnameSimpleTriggersimpleTrigger=newSimpleTrigger("simpleTrigger","triggerGroup-s1");//setitsstartuptimesimpleTrigger.setStartTime(newDate(ctime));//settheinterval,howoftenthejobshouldrun(10secondshere)simpleTrigger.setRepeatInterval(10000);//setthenumberofexec
8、utionofthisjob,setto10times.//Itwillrun10timeandexhaust.simpleTrigger.setRepeatCount(100);//settheendingtimeofthisjob.//Wesetitfor60secondsfromitsstartuptimehere//Eve
此文档下载收益归作者所有