简介:Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中 ,软件工程师 Michael Lipton 和 IT 架构师 Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一 般概述开始,并以一系 列展示 Quart 基本特性的代码示例作为结束。在阅读完本文并看过代码示例后, 您应当能够把 Quartz 的基本特性应用到任何 Java 应用程序中。
现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每个 底层组件也必须相应地发 展。作业调度是现代系统中对 Java 应用程序的一般要求,而且也是对 Java 开 发人员一贯的要求。虽然 目前的调度技术比起原始的数据库触发器标志和独立的调度器线程来说,已经发 展了许多,但是作业调度 仍然不是个小问题。对这个问题最合适的解决方案就是来自 OpenSymphony 的 Quartz API。
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供 了简单却强大的机制。 Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器 的多对多关系,还能把 多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事 件的作业,还可以为一个 事件组合多个作业。虽然可以通过属性文件(在属性文件中可以指定 JDBC 事务 的数据源、全局作业和/ 或触发器侦听器、插件、线程池,以及更多)配置 Quartz,但它根本没有与应用 程序服务器的上下文或 引用集成在一起。结果就是作业不能访问 Web 服务器的内部函数;例如,在使用 WebSphere 应用服务器 时,由 Quartz 调度的作业并不能影响服务器的动态缓存和数据源。
本文使用一系列代码示例介绍 Quartz API,演示它的机制,例如作业、触发 器、作业仓库和属性。
入门
要开始使用 Quartz,需要用 Quartz API 对项目进行配置。步骤如下:
下载 Quartz API。
解压缩并把 quartz-x.x.x.jar 放在项目文件夹内,或者把文件放在项目的类 路径中。
把 core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类 路径中。
如果使用 JDBCJobStore,把所有的 JDBC jar 文件放在项目的文件夹或项目 的类路径中。
为了方便读者,我已经把所有必要的文件,包括 DB2 JDBC 文件,编译到一个 zip 文件中。请参阅 下载 小节下载代码。
现在来看一下 Quartz API 的主要组件。
作业和触发器
Quartz 调度包的两个基本单元是作业和触发器。作业 是能够调度的可执行任 务,触发器 提供了对作 业的调度。虽然这两个实体很容易合在一起,但在 Quartz 中将它们分离开来是 有原因的,而且也很有益 处。
通过把要执行的工作与它的调度分开,Quartz 允许在不丢失作业本身或作业 的上下文的情况下,修改 调度触发器。而且,任何单个的作业都可以有多个触发器与其关联。