第二章. Quartz 起步

本章对 Quartz 框架一个快速的入门介绍,同时也大略指导你从哪里下载,构建和安装这个框架

1. Quartz 框架的发展历程
和现今许多在用的开源项目一样,Quartz之初也只是为个人开发者提供了一个简单的实现方案。但是随着日益增多的关键人员的积极参与和慷慨的贡献,Quartz 已经成为了一个为众人所知,并且能帮助人们解决更大问题的框架。

Quartz 项目 是由 James House 创立的,它在1998年就有该框架最初的构思。包括作业队列的概念,使用线程池来处理作业,也许它最早的模型已不为现今的Quartz使用者所知了。

在接下来的数年中,House 自己说他一直在关注着同一个需求:需要一个灵活的作业调度工具。他在找寻便宜且具有丰富特征的Java作业调度工具时,让他面临着以下几个选择:
    ·一个昂贵的商业化工具
    ·嵌入在大框架之中的,根本用不着这么一个大框架
    ·类似 Unix Cron 或者 Windows 的计划任务
    ·自己亲自定制的方案

House 有限的选择和在这个问题上的兴趣促成了他为作业调度器创建一个开源的项目。在2001年春天,他在 SourceForge 上创立了该项目,这一网址 http://sourceforge.net/projects/quartz 现在还是有效的,只是已经不再维护了。

自从 Quartz 的雏形一出来,众多的捐助者和开发人员加入到这个项目中来。然而应该说,Quartz 能象今天这么存在还是要感谢 House 以及他在作业调度领域中的兴趣。在众多人眼中,他那解决问题的决心很值得称颂的。

2. 下载和安装 Quartz

在 Quartz 的主页面 http://www.opensymphony.com/quartz 中有下载链接(由 OpenSymphony 提供的主机服务)。在这里你可获取到最新版,也有几个早期版本供下载。Quartz 下过来是一个完整的发行版,其中包括源代码和已编译好可直接使用的 JAR 文件。Quartz 的 JAR 包还存在于 ibiblio (译者注:http://www.ibiblio.org/maven/) maven 仓库中,很方便于你用 Maven (译者注:一个比ANT更为强大的构建工具)  或者 Ivy(译者注:一个免费基于Java的依赖管理器) 来构建系统。

下载到的是一个 ZIP 格式文件,因此你需要一个像 WINZIP 那样的工具,你还可以用 Java 的 jar 命令来解压缩该文件:

jar -xvf quartz-1.5.0-rc1.zip

Quartz 发行包中的文件将会解压到当前目录中。

解开来的 Quartz zip 文件包含以下几个子目录。表 2.1 描述了每一个子目录的内容。

表 2.1  Quartz 的目录结构和内容
目录名 存放内容
Docs
docs/api Quartz 框架的JavaDoc Api 说明文档
docs/dbTables 创建 Quartz 的数据库对象的脚本
docs/wikidocs Quartz 的帮助文件,点击 index.html 开始查看
Examples 多方面使用 Quartz 的例子
Lib Quartz 使用到的第三方包
src/java/org/quartz 使用 Quartz 的客户端程序源代码,公有 API
src/java/org/quartz/core 使用 Quartz 的服务端程序源代码,私有 API
src/java/org/quartz/simpl Quartz 提供的不衣赖于第三方产品的简单实现
src/java/org/quartz/impl 依赖于第三方产品的支持模块的实现
src/java/org/quartz/utils 整个框架要用到的辅助类和工具组件
src/jboss 提供了特定于 JBoss 特性的源代码
src/oracle 提供了特定于 Oracle 特性的源代码
src/weblogic 提供了特定于 WebLogic 特性的源代码

安装必要的 JAR 文件

如果你急于想让 Quartz 工作起来,那么最快捷的方法是获取到已编译打包好的 Quartz JAR 文件(它存在于解压后的根目录下),并把它加到你的应用程序的 Classpath 上,你还需要获取到 Quartz 所依赖的包。表 2.2 列出了要创建一个 Quartz 应用最基本的包。

Quartz 基本应用所需的 JAR 包
名称 位置 备注
Commons BeanUtils <quartz-download>/ lib/optional 依赖于怎么使用 Quartz, 最好是包含进来
Commons Collections <quartz-download>/ lib/core 需要
Commons Digester <quartz-download>/ lib/optional 依赖于怎么使用 Quartz, 最好是包含进来
Commons Logging <quartz-download>/ lib/core 需要

就像使用 Quartz JAR 包一样,你同样需要把所依赖的包加到应用程序的 Classpath 中。

当心版本冲突
Quartz 同特定版本的第三方包构建并作过测试。许多其他的项目,包括一些非常知名的应用服务器也使用着这些第三方库,在某些情况下,这些库已然成了应用服务器的组成部份。类加载器是一个很神奇的东西。假如你是在应用服务器环境中使用 Quartz,小心不要用到了重复的库,不然你可能会得到奇怪的执行结果。表 2.1 中的包如果它们已存在于应用服务器中,你的程序应该能运行的很好。然而,像 servlet.jarejb.jar 这样的包要是重复出现在 classpath 中,恐怕会给你带来麻烦。这个时候你可以试着不把这类包加到 classpath 中,看看程序的运行表现。


·quartz.properties 文件
Quartz 包括一个名为 quartz.properties 的配置文件,它允许你对 Quartz 的很多方面的配置。在 Quartz JAR 包中有一个默认的 quartz.properties 文件,但是假如你需要修改任何默认配置项时,你需要放置一个 quartz.properties 文件持贝在 classpath 下。

下一章将详细描述 quartz.properties 中哪些选项可配置和如何配置。你将有极大的可能性要去修改其中的一或多项设置,因此你应该拷贝一份 quartz.properties 文件到你的 classpath 下。

3. 从源代码构建 Quartz

下载到的Quartz包括源代码和可部署的JAR文件。有了源代码的好处之一是你可以深入去理解它是如何实现以及实现了什么。阅读源代码方便了想深入研究它的开发人员。如果是用像 Eclipse 那样的 IDE 想要单步跟进到代码中,那么源代码肯定是少不了的。(译者注:怎么感觉原文挺啰嗦的)

Quartz CVS 仓库

Quartz 的 CVS 仓库和别的 OpenSymphony 项目一块,都是着落在 Java.net 主机上。想要从 CVS 仓库中下载任何东西的话,你必须要有一个 CVS 帐号。当然,你也能在 xwork.dev.java.net/source/browse/quartz 上以匿名的方式浏览源代码,但是要下载的话就必须要有 CVS 帐号。

创建一个 Java.net 帐号
你可以登录到网址:http://www.dev.java.net/servlets/Join 注册一个免费的 Java.net 帐号。使用申请的帐号不仅能存取 Quartz CVS 仓库中的代码,而且还能够在这个站点上找到大量的有用的信息和技巧(见 http://www.java.net)。

创建好了帐号之后,你可以下载所需的文件用来构建 Quartz. 大致步骤是,打开命令行,进入到你希望工程存放的目录。通过 CVS 取代码后会在当前目录中创建两个子目录,quartz 和 opensymphony.

cvs -d :pserver:[username]@cvs.dev.java.net:/cvs login
cvs -d :pserver:[username]@cvs.dev.java.net:/cvs checkout quartz

cvs -d :pserver:[username]@cvs.dev.java.net:/
cvs checkout opensymphony

替换上面的[username]为你自己的帐号(命令中不带中括号)。

下载完这两个模块之后,命令行下进入到 quartz 子目录,并输入:

ant -projecthelp

该命令会列出所有的 target 和对应的描述。默认的 target 是构建 Quartz JAR 文件的 "jar";你可以在命令行下只输入 "ant",将会给你编译打包出一个 Quartz JAR 文件来。

 

IDE中由源代码进行构建
需要指出的是,几个 Quartz 包依赖于第三方的产品的,比如 JBoss 和 WebLogic. 当使用 Ant 的 build 文件从源代码进行构建时,默认的设置是,找不到第三方的包时会忽略构建那些组件。假如你的IDE中包括了完整的 Quarts 源代码,而又没有第三方产品的包,将会出现编译错误。最简单的方法是不要在IDE中包含那些源码。幸运的是,Quart 源码的层次和结构性很清晰,因此你可以在IDE中选择不包含某些目录/包。


4. 从 Quartz 社区获得帮助

通常评定一个开源项目的一个关键指标是它的用户社区的健康状况。参与到开源项目中完全是自愿的,并且是没有任何回报的,这也是为大家所认同的,用户应该是充满着热花费他们的时间在项目中。因此,自然给人的感觉就是,假如有一个令人满意的社区的话,用户就会相信这个项目的价值。

Quartz 的用户社区相当活跃的。和其他许多开源项目一样,大部份社区成都以匿名的方式查看列表和消息;少部分人发周占贴和回答别人的问题。Quartz 用户社区六个月以来就达到了一个很高的发贴记录,用户论坛收到了超过分属于500个不同主题的1500条消息,和惊人的25000人查看了贴子。这些甚至还不包括开发者列表中的消息。假如你注意到这六个月来的数字变化,你就能看出是一个上升趋势。从下载数量来看,Quartz 平均每月下载量在2000和3000之间。这些数字在有新版本发布时变的更高。

你能在网页 http://forums.opensymphony.com 找到进入用户或开发者论坛的链接,你也能够从 Quartz 的首页面 http://www.opensymphony.com/quartz 进入那两个论坛。也建议你注册加入到邮件列表中;假如感觉不错的话,可以加入到项目中,以任何自己所能的方式做有助于项目的事情。

5. 谁在用 Quartz?
开源软件一个常被人询问的问题是,"谁在使用它?"。如果有人在使用它,人们头脑中的观念就会觉得它一定很好,并且可安全的使用。尽管 Quartz 出来有好长一阵子了,但它最近才得到开发社区应得的关注。

使用了 Quartz 的用户和项目列表许多是我们耳熟能详的。你能在 Quartz Wike 网站 http://wiki.opensymphony.com/display/QRTZ1/Quartz+Users 看到这个列表。Quartz 是作为其中的那些知名开源项目的一部分存在,这些开源项目包括有:JIRA, Spring 和几个 Jakarta 项目。

没有一个准确的方法获知到底有多少用户在实际的项目中使用 Quartz。但是从下载次数以及某些当前流行的项目正在使用 Quartz 可推断出,Quartz 的使用者应该是数以千计。

第二章到此结束,会继续未尽的革命事业。
-----------------------------------
看别人译作,不时也会指手划脚起来,可真待到自己去把英文转成中文时,才有些体会,有些一眼看过去很明了的原句,换成中文愣是难找到一个合适的词,同时对原句一知半解时,转换起来就要受些阻,强行过去难免要跑意了......