第二章. 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 的使用者應該是數以千計。

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