《Quartz定时器》PPT课件.ppt
《《Quartz定时器》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Quartz定时器》PPT课件.ppt(29页珍藏版)》请在三一办公上搜索。
1、Quartz定时器,综合软件开发三部 连勇,2,Quartz是什么Quartz能干什么Easy exampleQuartz框架分析项目开发,3,Quartz是什么?,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。Quartz用一个小Jav
2、a库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。,4,Quartz能干什么?,场景#1:下载交易流水从银行下载当日交易流水场景#2:邮件提醒和告警公司出于安全考虑,让每个员工三个月换一次邮箱密码。这种情况下,可以创建一个作业,让它每天午夜运行一次,并且向离过期时间不到三天的所有用户发邮件提醒。这里可以恰到好处的用到作业调度器。图 1.1 描绘了密码这个提醒作业。图 1.1 密码过期的作业每晚发送邮件给密码很快会过期的用户,5,Easy
3、 example,/First we must get a reference to a schedulerSchedulerFactory sf=new StdSchedulerFactory();Scheduler sched=sf.getScheduler();/computer a time that is on the next round minuteDate runTime=TriggerUtils.getEvenMinuteDate(new Date();/define the job and tie it to our HelloJob classJobDetail job=
4、new JobDetail(job1,group1,HelloJob.class);/Trigger the job to run on the next round minuteTrigger trigger=new SimpleTrigger(trigger1,group1,runTime);/Tell quartz to schedule the job using our triggersched.scheduleJob(job,trigger);/Start up the schedulersched.start();,6,下载=,下载:http:/www.quartz-schedu
5、ler.org/download/index.htmldocs/wikidocs Quartz 的帮助文件docs/api Quartz 框架的JavaDoc Api 说明文档Examples Quartz 的例子Lib Quartz使用到的第三方包src源码,7,Quartz框架分析,核心接口SchedulerJobJobDetailTriggerJobDataMap,8,Scheduler(调度器),A Scheduler maintains a registery of org.quartz.JobDetails and Triggers.Once registered,the Sche
6、duler is responible for executing Job s when their associated Triggers fire(when their scheduled time arrives).void addJob(JobDetail jobDetail,boolean replace)throws SchedulerException;Date scheduleJob(Trigger trigger)throws SchedulerException;Date scheduleJob(JobDetail jobDetail,Trigger trigger)thr
7、ows SchedulerException;Date rescheduleJob(String triggerName,String groupName,Trigger newTrigger)throws SchedulerException;,9,Scheduler(调度器),客服端与调度器交互是通过 org.quartz.Scheduler 接口的。这个 Scheduler 的实现,实际上是一个代理,对其中方法调用会传递到 QuartzScheduler 实例上。QuartzScheduler 处在框架根的位置,它是一个引擎驱动着整个框架。Quartz相当灵活和可配置,许多重要的功能由分
8、离的组件和子框架实现,所以并非所有的功能都直接内建到 QuartzScheduler。这就意味着用户可以用自己某个关键特征实现来替换原有默认实现。,10,Scheduler实例化,使用scheduler之前应首先实例化它。使用SchedulerFactory可以完成scheduler的实例化。org.quartz.impl.DirectoSchedulerFactory org.quartz.impl.StdSchedulerFactoryStdSchedulerFactory会加载类路径下的quartz.properties 文件。quartz.properties,允许你修改框架运行时环境
9、。缺省是使用Quartz.jar里面的quartz.properties文件。当然,你应该创建一个quartz.properties文件的副本并且把它放入你工程的classes目录中以便类装载器找到它。,11,Scheduler启动关闭,一旦一个scheduler被实例化,它就可以被启动(start),并且处于驻留模式,直到被关闭(shutdown)。注意,一旦scheduler被关闭(shutdown),则它不能再重新启动,除非重新实例化它。除非scheduler 被启动并且不处于暂停状态,否则触发器不会被触发(任务也不能被执行)。void start()throws SchedulerEx
10、ception;void startDelayed(int seconds)throws SchedulerException;void shutdown()throws SchedulerException;void shutdown(boolean waitForJobsToComplete)throws SchedulerException;,12,Job,作业是一个执行任务的简单java类。任务可以是任何java代码。只需你实现org.quartz.Job接口。当Quartz确定该是作业运行的时候,它将调用你的作业。Quartz提供了一个机制来建立具有不同粒度的、可重复的调度表,于是,
11、你只需创建一个java类,这个类被调用而执行任务。public interface Job void execute(JobExecutionContext context)throws JobExecutionException;,13,JobDetail,JobDetail对象由Quartz客户端在Job被加入到scheduler时创建。它包含了Job的各种设置属性以及一个JobDataMap对象,这个对象被用来存储给定Job类实例的状态信息。Scheduler并不保存真正的Job Class,而是通过JobDetail来保存。注意,我们给scheduler传入了一个JobDetail实例
12、,而且这个JobDetail实例只是简单提供了类名来引用被执行的Job。每次scheduler执行这个任务时,它就创建这个类的新实例,然后调用该实例的execute(.)方法。Job不必担心线程安全性,因为同一时刻仅有一个线程去执行给定Job类的实例,甚至是并发执行同一Job也是如此。推断:Job类必须有一个无参数的构造函数Job类中定义的成员数据失去意义,因为这些成员数据值在每次执行的时候被“清空”了。,14,JobFactory,JobFactory控制job的实例化Job newJob(TriggerFiredBundle bundle)throws SchedulerException
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Quartz定时器 Quartz 定时器 PPT 课件
链接地址:https://www.31ppt.com/p-5625915.html