Quartz学习笔记.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Quartz学习笔记

Quartz学习笔记 Quartz特点 1) Quartz能嵌入到任何独立的应用中运行。 2) Quartz能在应用服务器或者 Servlet 容器中实例化,并且能够参与 XA 事务。 3) Quartz能够以独立的方式运行(在它自己的Java虚拟机中),可以通过 RMI使用 Quartz。 4) Quartz可以被实例化为独立程序的集群(有负载均衡和容错能力)。 Quartz功能介绍 任务执行(Job Execution) 任务是任何实现简单 Job 接口的 Java 类,这样开发者能够执行任何完成他们工作 的任务。 任务类的实例可以由 Quartz实例化,也可以由你的程序框架实例化。 当触发器被触发时,日程管理器将会通知某个或者多个实现了JobListener 或 TriggerListener的对象(监听器可以是简单的Java对象,或者 EJBs,或者 JMS 消息发布器,等等)。这些监听器在任务执行完毕后也会接到通知。 任务被完成后,他们会返回一个“任务完成码(JobCompletionCode)”,这个 “任务完成码”告知日程管理器任务执行的结果是成功还是失败。日程管理器会根据成功或者失败码来采取措施,比如:立即重新执行任务 任务持久化(Job Persistence) Quartz设计中包括了一个JobStore接口,这样,实现这个接口的 Job多种机制实现Job 的存储。 存储在数据库中:通过使用 JDBCJobStore,所有的 Jobs和 Triggers 被配置为“non-volatile”(不 轻快)的方式。即,通过 JDBC 存储在关系数据库中。 存储在RAM中:通过使用 RAMJobStore,所有Jobs和 Triggers 被存储在 RAM。因此,在程序执行中没有被持久化,但这种方式的优点就是不需要外部数据库。 事务(Transactions) Quartz通过JobStoreCMT(JDBCJobStore的一个子类)可参与 JTA 事务。 Quartz可以管理JTA (工作任务分析Quartz在每次执行Job时,都重新创建一个Job实例,所以它不直接接受一个Job的实例,相反它接收一个Job实现类,以便运行时通过newInstance()的反射机制实例化Job。因此需要通过一个类来描述Job的实现类及其它相关的静态信息,如Job名字、描 述、关联监听器等信息,JobDetail承担了这一角色。通过该类的构造函数可以更具体地了解它的功用:JobDetail(java.lang.String name, java.lang.String group, java.lang.Class jobClass),该构造函数要求指定Job的实现类,以及任务在Scheduler中的组名和Job名称;Trigger:是一个类,描述触发Job执行的时间触发规则。主要有SimpleTrigger和CronTrigger这两个子类。当仅需触 发一次或者以固定时间间隔周期执行,SimpleTrigger是最适合的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规 则的调度方案:如每早晨9:00执行,周一、周三、周五下午5:00执行等 Calendar:org.quartz.Calendar和java.util.Calendar不同,它是一些日历特定时间点的集合(可以简 单地将org.quartz.Calendar看作java.util.Calendar的集合——java.util.Calendar代表一个日历时 间点,无特殊说明后面的Calendar即指org.quartz.Calendar)。一个Trigger可以和多个Calendar关联,以便排除或 包含某些时间点。Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail可以注册到Scheduler中,两者在 Scheduler中拥有各自的组及名称,组及名称是Scheduler查找定位容器中某一对象的依据,Trigger的组及名称必须唯 一,JobDetail的组和名称也必须唯一(但可以和Trigger的组和名称相同,因为它们是不同类型的)。Scheduler定义了多个接口方法, 允许外部通过组及名称访问和控制容器中Trigger和JobDetail。Scheduler可以将Trigger绑定到某一JobDetail中,这样当Trigger触发时,对应的Job就被执行。一个Job可以对应 多个Trigger,但一个Trigger只能对应一个Job。可以通过SchedulerFactory创建一个Scheduler实例。 Scheduler拥有一个SchedulerContext,它类似于Ser

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档