第二章. Quartz 起步

本章對(duì) Quartz 框架一個(gè)快速的入門介紹,同時(shí)也大略指導(dǎo)你從哪里下載,構(gòu)建和安裝這個(gè)框架

1. Quartz 框架的發(fā)展歷程
和現(xiàn)今許多在用的開源項(xiàng)目一樣,Quartz之初也只是為個(gè)人開發(fā)者提供了一個(gè)簡單的實(shí)現(xiàn)方案。但是隨著日益增多的關(guān)鍵人員的積極參與和慷慨的貢獻(xiàn),Quartz 已經(jīng)成為了一個(gè)為眾人所知,并且能幫助人們解決更大問題的框架。

Quartz 項(xiàng)目 是由 James House 創(chuàng)立的,它在1998年就有該框架最初的構(gòu)思。包括作業(yè)隊(duì)列的概念,使用線程池來處理作業(yè),也許它最早的模型已不為現(xiàn)今的Quartz使用者所知了。

在接下來的數(shù)年中,House 自己說他一直在關(guān)注著同一個(gè)需求:需要一個(gè)靈活的作業(yè)調(diào)度工具。他在找尋便宜且具有豐富特征的Java作業(yè)調(diào)度工具時(shí),讓他面臨著以下幾個(gè)選擇:
    ·一個(gè)昂貴的商業(yè)化工具
    ·嵌入在大框架之中的,根本用不著這么一個(gè)大框架
    ·類似 Unix Cron 或者 Windows 的計(jì)劃任務(wù)
    ·自己親自定制的方案

House 有限的選擇和在這個(gè)問題上的興趣促成了他為作業(yè)調(diào)度器創(chuàng)建一個(gè)開源的項(xiàng)目。在2001年春天,他在 SourceForge 上創(chuàng)立了該項(xiàng)目,這一網(wǎng)址 http://sourceforge.net/projects/quartz 現(xiàn)在還是有效的,只是已經(jīng)不再維護(hù)了。

自從 Quartz 的雛形一出來,眾多的捐助者和開發(fā)人員加入到這個(gè)項(xiàng)目中來。然而應(yīng)該說,Quartz 能象今天這么存在還是要感謝 House 以及他在作業(yè)調(diào)度領(lǐng)域中的興趣。在眾多人眼中,他那解決問題的決心很值得稱頌的。

2. 下載和安裝 Quartz

在 Quartz 的主頁面 http://www.opensymphony.com/quartz 中有下載鏈接(由 OpenSymphony 提供的主機(jī)服務(wù))。在這里你可獲取到最新版,也有幾個(gè)早期版本供下載。Quartz 下過來是一個(gè)完整的發(fā)行版,其中包括源代碼和已編譯好可直接使用的 JAR 文件。Quartz 的 JAR 包還存在于 ibiblio (譯者注:http://www.ibiblio.org/maven/) maven 倉庫中,很方便于你用 Maven (譯者注:一個(gè)比ANT更為強(qiáng)大的構(gòu)建工具)  或者 Ivy(譯者注:一個(gè)免費(fèi)基于Java的依賴管理器) 來構(gòu)建系統(tǒng)。

下載到的是一個(gè) ZIP 格式文件,因此你需要一個(gè)像 WINZIP 那樣的工具,你還可以用 Java 的 jar 命令來解壓縮該文件:

jar -xvf quartz-1.5.0-rc1.zip

Quartz 發(fā)行包中的文件將會(huì)解壓到當(dāng)前目錄中。

解開來的 Quartz zip 文件包含以下幾個(gè)子目錄。表 2.1 描述了每一個(gè)子目錄的內(nèi)容。

表 2.1  Quartz 的目錄結(jié)構(gòu)和內(nèi)容
目錄名 存放內(nèi)容
Docs
docs/api Quartz 框架的JavaDoc Api 說明文檔
docs/dbTables 創(chuàng)建 Quartz 的數(shù)據(jù)庫對(duì)象的腳本
docs/wikidocs Quartz 的幫助文件,點(diǎn)擊 index.html 開始查看
Examples 多方面使用 Quartz 的例子
Lib Quartz 使用到的第三方包
src/java/org/quartz 使用 Quartz 的客戶端程序源代碼,公有 API
src/java/org/quartz/core 使用 Quartz 的服務(wù)端程序源代碼,私有 API
src/java/org/quartz/simpl Quartz 提供的不衣賴于第三方產(chǎn)品的簡單實(shí)現(xiàn)
src/java/org/quartz/impl 依賴于第三方產(chǎn)品的支持模塊的實(shí)現(xiàn)
src/java/org/quartz/utils 整個(gè)框架要用到的輔助類和工具組件
src/jboss 提供了特定于 JBoss 特性的源代碼
src/oracle 提供了特定于 Oracle 特性的源代碼
src/weblogic 提供了特定于 WebLogic 特性的源代碼

安裝必要的 JAR 文件

如果你急于想讓 Quartz 工作起來,那么最快捷的方法是獲取到已編譯打包好的 Quartz JAR 文件(它存在于解壓后的根目錄下),并把它加到你的應(yīng)用程序的 Classpath 上,你還需要獲取到 Quartz 所依賴的包。表 2.2 列出了要?jiǎng)?chuàng)建一個(gè) Quartz 應(yīng)用最基本的包。

Quartz 基本應(yīng)用所需的 JAR 包
名稱 位置 備注
Commons BeanUtils <quartz-download>/ lib/optional 依賴于怎么使用 Quartz, 最好是包含進(jìn)來
Commons Collections <quartz-download>/ lib/core 需要
Commons Digester <quartz-download>/ lib/optional 依賴于怎么使用 Quartz, 最好是包含進(jìn)來
Commons Logging <quartz-download>/ lib/core 需要

就像使用 Quartz JAR 包一樣,你同樣需要把所依賴的包加到應(yīng)用程序的 Classpath 中。

當(dāng)心版本沖突
Quartz 同特定版本的第三方包構(gòu)建并作過測試。許多其他的項(xiàng)目,包括一些非常知名的應(yīng)用服務(wù)器也使用著這些第三方庫,在某些情況下,這些庫已然成了應(yīng)用服務(wù)器的組成部份。類加載器是一個(gè)很神奇的東西。假如你是在應(yīng)用服務(wù)器環(huán)境中使用 Quartz,小心不要用到了重復(fù)的庫,不然你可能會(huì)得到奇怪的執(zhí)行結(jié)果。表 2.1 中的包如果它們已存在于應(yīng)用服務(wù)器中,你的程序應(yīng)該能運(yùn)行的很好。然而,像 servlet.jarejb.jar 這樣的包要是重復(fù)出現(xiàn)在 classpath 中,恐怕會(huì)給你帶來麻煩。這個(gè)時(shí)候你可以試著不把這類包加到 classpath 中,看看程序的運(yùn)行表現(xiàn)。


·quartz.properties 文件
Quartz 包括一個(gè)名為 quartz.properties 的配置文件,它允許你對(duì) Quartz 的很多方面的配置。在 Quartz JAR 包中有一個(gè)默認(rèn)的 quartz.properties 文件,但是假如你需要修改任何默認(rèn)配置項(xiàng)時(shí),你需要放置一個(gè) quartz.properties 文件持貝在 classpath 下。

下一章將詳細(xì)描述 quartz.properties 中哪些選項(xiàng)可配置和如何配置。你將有極大的可能性要去修改其中的一或多項(xiàng)設(shè)置,因此你應(yīng)該拷貝一份 quartz.properties 文件到你的 classpath 下。

3. 從源代碼構(gòu)建 Quartz

下載到的Quartz包括源代碼和可部署的JAR文件。有了源代碼的好處之一是你可以深入去理解它是如何實(shí)現(xiàn)以及實(shí)現(xiàn)了什么。閱讀源代碼方便了想深入研究它的開發(fā)人員。如果是用像 Eclipse 那樣的 IDE 想要單步跟進(jìn)到代碼中,那么源代碼肯定是少不了的。(譯者注:怎么感覺原文挺啰嗦的)

Quartz CVS 倉庫

Quartz 的 CVS 倉庫和別的 OpenSymphony 項(xiàng)目一塊,都是著落在 Java.net 主機(jī)上。想要從 CVS 倉庫中下載任何東西的話,你必須要有一個(gè) CVS 帳號(hào)。當(dāng)然,你也能在 xwork.dev.java.net/source/browse/quartz 上以匿名的方式瀏覽源代碼,但是要下載的話就必須要有 CVS 帳號(hào)。

創(chuàng)建一個(gè) Java.net 帳號(hào)
你可以登錄到網(wǎng)址:http://www.dev.java.net/servlets/Join 注冊(cè)一個(gè)免費(fèi)的 Java.net 帳號(hào)。使用申請(qǐng)的帳號(hào)不僅能存取 Quartz CVS 倉庫中的代碼,而且還能夠在這個(gè)站點(diǎn)上找到大量的有用的信息和技巧(見 http://www.java.net)。

創(chuàng)建好了帳號(hào)之后,你可以下載所需的文件用來構(gòu)建 Quartz. 大致步驟是,打開命令行,進(jìn)入到你希望工程存放的目錄。通過 CVS 取代碼后會(huì)在當(dāng)前目錄中創(chuàng)建兩個(gè)子目錄,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]為你自己的帳號(hào)(命令中不帶中括號(hào))。

下載完這兩個(gè)模塊之后,命令行下進(jìn)入到 quartz 子目錄,并輸入:

ant -projecthelp

該命令會(huì)列出所有的 target 和對(duì)應(yīng)的描述。默認(rèn)的 target 是構(gòu)建 Quartz JAR 文件的 "jar";你可以在命令行下只輸入 "ant",將會(huì)給你編譯打包出一個(gè) Quartz JAR 文件來。

 

IDE中由源代碼進(jìn)行構(gòu)建
需要指出的是,幾個(gè) Quartz 包依賴于第三方的產(chǎn)品的,比如 JBoss 和 WebLogic. 當(dāng)使用 Ant 的 build 文件從源代碼進(jìn)行構(gòu)建時(shí),默認(rèn)的設(shè)置是,找不到第三方的包時(shí)會(huì)忽略構(gòu)建那些組件。假如你的IDE中包括了完整的 Quarts 源代碼,而又沒有第三方產(chǎn)品的包,將會(huì)出現(xiàn)編譯錯(cuò)誤。最簡單的方法是不要在IDE中包含那些源碼。幸運(yùn)的是,Quart 源碼的層次和結(jié)構(gòu)性很清晰,因此你可以在IDE中選擇不包含某些目錄/包。


4. 從 Quartz 社區(qū)獲得幫助

通常評(píng)定一個(gè)開源項(xiàng)目的一個(gè)關(guān)鍵指標(biāo)是它的用戶社區(qū)的健康狀況。參與到開源項(xiàng)目中完全是自愿的,并且是沒有任何回報(bào)的,這也是為大家所認(rèn)同的,用戶應(yīng)該是充滿著熱花費(fèi)他們的時(shí)間在項(xiàng)目中。因此,自然給人的感覺就是,假如有一個(gè)令人滿意的社區(qū)的話,用戶就會(huì)相信這個(gè)項(xiàng)目的價(jià)值。

Quartz 的用戶社區(qū)相當(dāng)活躍的。和其他許多開源項(xiàng)目一樣,大部份社區(qū)成都以匿名的方式查看列表和消息;少部分人發(fā)周占貼和回答別人的問題。Quartz 用戶社區(qū)六個(gè)月以來就達(dá)到了一個(gè)很高的發(fā)貼記錄,用戶論壇收到了超過分屬于500個(gè)不同主題的1500條消息,和驚人的25000人查看了貼子。這些甚至還不包括開發(fā)者列表中的消息。假如你注意到這六個(gè)月來的數(shù)字變化,你就能看出是一個(gè)上升趨勢(shì)。從下載數(shù)量來看,Quartz 平均每月下載量在2000和3000之間。這些數(shù)字在有新版本發(fā)布時(shí)變的更高。

你能在網(wǎng)頁 http://forums.opensymphony.com 找到進(jìn)入用戶或開發(fā)者論壇的鏈接,你也能夠從 Quartz 的首頁面 http://www.opensymphony.com/quartz 進(jìn)入那兩個(gè)論壇。也建議你注冊(cè)加入到郵件列表中;假如感覺不錯(cuò)的話,可以加入到項(xiàng)目中,以任何自己所能的方式做有助于項(xiàng)目的事情。

5. 誰在用 Quartz?
開源軟件一個(gè)常被人詢問的問題是,"誰在使用它?"。如果有人在使用它,人們頭腦中的觀念就會(huì)覺得它一定很好,并且可安全的使用。盡管 Quartz 出來有好長一陣子了,但它最近才得到開發(fā)社區(qū)應(yīng)得的關(guān)注。

使用了 Quartz 的用戶和項(xiàng)目列表許多是我們耳熟能詳?shù)摹D隳茉?Quartz Wike 網(wǎng)站 http://wiki.opensymphony.com/display/QRTZ1/Quartz+Users 看到這個(gè)列表。Quartz 是作為其中的那些知名開源項(xiàng)目的一部分存在,這些開源項(xiàng)目包括有:JIRA, Spring 和幾個(gè) Jakarta 項(xiàng)目。

沒有一個(gè)準(zhǔn)確的方法獲知到底有多少用戶在實(shí)際的項(xiàng)目中使用 Quartz。但是從下載次數(shù)以及某些當(dāng)前流行的項(xiàng)目正在使用 Quartz 可推斷出,Quartz 的使用者應(yīng)該是數(shù)以千計(jì)。

第二章到此結(jié)束,會(huì)繼續(xù)未盡的革命事業(yè)。
-----------------------------------
看別人譯作,不時(shí)也會(huì)指手劃腳起來,可真待到自己去把英文轉(zhuǎn)成中文時(shí),才有些體會(huì),有些一眼看過去很明了的原句,換成中文愣是難找到一個(gè)合適的詞,同時(shí)對(duì)原句一知半解時(shí),轉(zhuǎn)換起來就要受些阻,強(qiáng)行過去難免要跑意了......