欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Quartz從入門(mén)到進(jìn)階
Quartz

Quartz是一個(gè)開(kāi)源的作業(yè)調度框架,它完全由java寫(xiě)成,并設計用于J2SE和J2EE應用中。它提供了巨大的靈活性而不犧牲簡(jiǎn)單性。你能夠用它來(lái)為執行一個(gè)作業(yè)而創(chuàng )建簡(jiǎn)單的或復雜的調度。它有很多特征,如:數據庫支持,集群,插件,EJB作業(yè)預構建,JavaMail及其它,支持cron-like表達式等等。

本文內容
1.        Quartz讓任務(wù)調度簡(jiǎn)單
2.        Quartz的發(fā)展史
3.        上手Quartz
4.        Quartz內部架構
5.        作業(yè)
6.        作業(yè)管理和存儲
7.        有效作業(yè)存儲
8.        作業(yè)和觸發(fā)器
9.        調度一個(gè)作業(yè)
10.        用調度器(Scheduler)調用你的作業(yè)
11.        編程調度同聲明性調度
12.        有狀態(tài)和無(wú)狀態(tài)作業(yè)
13.        Quartz框架的其他特征
14.        Quartz下一步計劃
15.        了解更多Quartz特征


你曾經(jīng)需要應用執行一個(gè)任務(wù)嗎?這個(gè)任務(wù)每天或每周星期二晚上11:30,或許僅僅每個(gè)月的最后一天執行。一個(gè)自動(dòng)執行而無(wú)須干預的任務(wù)在執行過(guò)程中如果發(fā)生一個(gè)嚴重錯誤,應用能夠知到其執行失敗并嘗試重新執行嗎?你和你的團隊是用java編程嗎?如果這些問(wèn)題中任何一個(gè)你回答是,那么你應該使用Quartz調度器。

旁注:Matrix目前就大量使用到了Quartz。比如,排名統計功能的實(shí)現,在Jmatrix里通過(guò)Quartz定義了一個(gè)定時(shí)調度作業(yè),在每天凌晨一點(diǎn),作業(yè)開(kāi)始工作,重新統計大家的Karma和排名等。
還有,RSS文件的生成,也是通過(guò)Quartz定義作業(yè),每隔半個(gè)小時(shí)生成一次RSS XML文件。
所以Quartz使用的地方很多,本文無(wú)疑是一篇很好的入門(mén)和進(jìn)階的文章,在此,感謝David w Johnson的努力!


Quartz讓作業(yè)調度簡(jiǎn)單

Quartz是一個(gè)完全由java編寫(xiě)的開(kāi)源作業(yè)調度框架。不要讓作業(yè)調度這個(gè)術(shù)語(yǔ)嚇著(zhù)你。盡管Quartz框架整合了許多額外功能, 但就其簡(jiǎn)易形式看,你會(huì )發(fā)現它易用得簡(jiǎn)直讓人受不了!。簡(jiǎn)單地創(chuàng )建一個(gè)實(shí)現org.quartz.Job接口的java類(lèi)。Job接口包含唯一的方法:

public void execute(JobExecutionContext context) 
     throws JobExecutionException;


在你的Job接口實(shí)現類(lèi)里面,添加一些邏輯到execute()方法。一旦你配置好Job實(shí)現類(lèi)并設定好調度時(shí)間表,Quartz將密切注意剩余時(shí)間。當調度程序確定該是通知你的作業(yè)的時(shí)候,Quartz框架將調用你Job實(shí)現類(lèi)(作業(yè)類(lèi))上的execute()方法并允許做它該做的事情。無(wú)需報告任何東西給調度器或調用任何特定的東西。僅僅執行任務(wù)和結束任務(wù)即可。如果配置你的作業(yè)在隨后再次被調用,Quartz框架將在恰當的時(shí)間再次調用它。

如果你使用了其它流行的開(kāi)源框架象struts,你會(huì )對Quartz的設計和部件感到舒適。雖然兩個(gè)開(kāi)源工程是解決完全不同的問(wèn)題,還是有很多相似的之處,就是開(kāi)源軟件用戶(hù)每天感覺(jué)很舒適。Quartz能用在單機J2SE應用中,作為一個(gè)RMI服務(wù)器,也可以用在web應用中,甚至也可以用在J2EE應用服務(wù)器中。

Quartz的發(fā)展史

盡管Quartz今年開(kāi)始受到人們注意,但還是暫時(shí)流行。Quartz由James House創(chuàng )建并最初于2001年春天被加入sourceforge工程。接下來(lái)的幾年里,有許多新特征和版本出現,但是直到項目遷移到新的站點(diǎn)并成為OpenSymphony項目家族的一員,才開(kāi)始真正啟動(dòng)并受到應有的關(guān)注。
James House仍然和幾個(gè)協(xié)助他的業(yè)余開(kāi)發(fā)者參與大量開(kāi)發(fā)工作。Quartz開(kāi)發(fā)團隊今年能發(fā)布幾個(gè)新版本,包括當前正處在候選發(fā)布階段的1.5版。

上手Quartz
Quartz工程駐留在OpenSymphony站點(diǎn)上。在Quartz站點(diǎn)上可以找到許多有用的資源:JavaDocs,包含指南的文檔,CVS訪(fǎng)問(wèn),用戶(hù)和開(kāi)發(fā)者論壇的連接,當然也有下載。
從下載連接取得Quartz的發(fā)布版本,并且解壓到到本地目錄。這個(gè)下載文件包含了一個(gè)預先構建好的Quartz二進(jìn)制文件(quartz.jar),你可以將它放進(jìn)自己的應用中。Quartz框架只需要少數的第三方庫,并且這些三方庫是必需的,你很可能已經(jīng)在使用這些庫了。

你要把Quartz的安裝目錄的<quartz- install>/lib/core 和 <quartz-install>/lib/optional目錄中的第三方庫加進(jìn)你自己的工程中。大多數第三方庫是我們所熟知和喜歡的標準Jakarta Commons庫,像Commons Logging, Commons BeantUtils等等。
    
quartz.properties文件
Quartz有一個(gè)叫做quartz.properties的配置文件,它允許你修改框架運行時(shí)環(huán)境。缺省是使用Quartz.jar里面的quartz.properties文件。當然,你應該創(chuàng )建一個(gè)quartz.properties文件的副本并且把它放入你工程的classes目錄中以便類(lèi)裝載器找到它。quartz.properties樣本文件如例1所示。

例1.quartz.properties文件允許修改Quartz運行環(huán)境:

#===============================================================
# Configure Main Scheduler Properties  
#===============================================================

org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO

#===============================================================
# Configure ThreadPool  
#===============================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount =  5
org.quartz.threadPool.threadPriority = 5

#===============================================================
# Configure JobStore  
#===============================================================

org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore


一旦將Quartz.jar文件和第三方庫加到自己的工程里面并且quartz.properties文件在工程的classes目錄中,就可以創(chuàng )建作業(yè)了。然而,在做這之前,我們暫且回避一下先簡(jiǎn)短討論一下Quartz架構。

Quartz內部架構
在規模方面,Quartz跟大多數開(kāi)源框架類(lèi)似。大約有300個(gè)java類(lèi)和接口,并被組織到12個(gè)包中。這可以和Apache Struts把大約325個(gè)類(lèi)和接口以及組織到11個(gè)包中相比。盡管規模幾乎不會(huì )用來(lái)作為衡量框架質(zhì)量的一個(gè)特性,但這里的關(guān)鍵是quarts內含很多功能,這些功能和特性集是否成為、或者應該成為評判一個(gè)開(kāi)源或非開(kāi)源框架質(zhì)量的因素。

Quartz調度器
Quartz框架的核心是調度器。調度器負責管理Quartz應用運行時(shí)環(huán)境。調度器不是靠自己做所有的工作,而是依賴(lài)框架內一些非常重要的部件。Quartz不僅僅是線(xiàn)程和線(xiàn)程管理。為確??缮炜s性,Quartz采用了基于多線(xiàn)程的架構。啟動(dòng)時(shí),框架初始化一套worker線(xiàn)程,這套線(xiàn)程被調度器用來(lái)執行預定的作業(yè)。這就是Quartz怎樣能并發(fā)運行多個(gè)作業(yè)的原理。Quartz依賴(lài)一套松耦合的線(xiàn)程池管理部件來(lái)管理線(xiàn)程環(huán)境。本片文障中,我們會(huì )多次提到線(xiàn)程池管理,但Quartz里面的每個(gè)對象是可配置的或者是可定制的。所以,例如,如果你想要插進(jìn)自己線(xiàn)程池管理設施,我猜你一定能!

作業(yè)
用Quartz的行話(huà)講,作業(yè)是一個(gè)執行任務(wù)的簡(jiǎn)單java類(lèi)。任務(wù)可以是任何java代碼。只需你實(shí)現org.quartz.Job接口并且在出現嚴重錯誤情況下拋出JobExecutionException異常即可。Job接口包含唯一的一個(gè)方法execute(),作業(yè)從這里開(kāi)始執行。一旦實(shí)現了Job接口和execute()方法,當Quartz確定該是作業(yè)運行的時(shí)候,它將調用你的作業(yè)。Execute()方法內就完全是你要做的事情。下面有一些你要在作業(yè)里面做事情的例子:
·        用JavaMail(或者用其他的像Commons Net一樣的郵件框架)發(fā)送郵件
·        創(chuàng )建遠程接口并且調用在EJB上的方法
·        獲取Hibernate Session,查詢(xún)和更新關(guān)系數據庫里的數據
·        使用OSWorkflow并且從作業(yè)調用一個(gè)工作流
·        使用FTP和到處移動(dòng)文件
·        調用Ant構建腳本開(kāi)始預定構建

這種可能性是無(wú)窮的,正事這種無(wú)限可能性使得框架功能如此強大。Quartz給你提供了一個(gè)機制來(lái)建立具有不同粒度的、可重復的調度表,于是,你只需創(chuàng )建一個(gè)java類(lèi),這個(gè)類(lèi)被調用而執行任務(wù)。

作業(yè)管理和存儲
作業(yè)一旦被調度,調度器需要記住并且跟蹤作業(yè)和它們的執行次數。如果你的作業(yè)是30分鐘后或每30秒調用,這不是很有用。事實(shí)上,作業(yè)執行需要非常準確和即時(shí)調用在被調度作業(yè)上的execute()方法。Quartz通過(guò)一個(gè)稱(chēng)之為作業(yè)存儲(JobStore)的概念來(lái)做作業(yè)存儲和管理。


有效作業(yè)存儲

Quartz提供兩種基本作業(yè)存儲類(lèi)型。第一種類(lèi)型叫做RAMJobStore,它利用通常的內存來(lái)持久化調度程序信息。這種作業(yè)存儲類(lèi)型最容易配置、構造和運行。對許多應用來(lái)說(shuō),這種作業(yè)存儲已經(jīng)足夠了。然而,因為調度程序信息是存儲在被分配給JVM的內存里面,所以,當應用程序停止運行時(shí),所有調度信息將被丟失。如果你需要在重新啟動(dòng)之間持久化調度信息,則將需要第二種類(lèi)型的作業(yè)存儲。

第二種類(lèi)型的作業(yè)存儲實(shí)際上提供兩種不同的實(shí)現,但兩種實(shí)現一般都稱(chēng)為JDBC作業(yè)存儲。兩種JDBC作業(yè)存儲都需要JDBC驅動(dòng)程序和后臺數據庫來(lái)持久化調度程序信息。這兩種類(lèi)型的不同在于你是否想要控制數據庫事務(wù)或這釋放控制給應用服務(wù)器例如BEA‘s WebLogic或Jboss。(這類(lèi)似于J2EE領(lǐng)域中,Bean管理的事務(wù)和和容器管理事務(wù)之間的區別)
這兩種JDBC作業(yè)存儲是:

·        JobStoreTX:當你想要控制事務(wù)或工作在非應用服務(wù)器環(huán)境中是使用
·        JobStoreCMT:當你工作在應用服務(wù)器環(huán)境中和想要容器控制事務(wù)時(shí)使用。

JDBC作業(yè)存儲為需要調度程序維護調度信息的用戶(hù)而設計。

作業(yè)和觸發(fā)器

Quartz設計者做了一個(gè)設計選擇來(lái)從調度分離開(kāi)作業(yè)。Quartz中的觸發(fā)器用來(lái)告訴調度程序作業(yè)什么時(shí)候觸發(fā)??蚣芴峁┝艘话延|發(fā)器類(lèi)型,但兩個(gè)最常用的是SimpleTrigger和CronTrigger。SimpleTrigger為需要簡(jiǎn)單打火調度而設計。典型地,如果你需要在給定的時(shí)間和重復次數或者兩次打火之間等待的秒數打火一個(gè)作業(yè),那么SimpleTrigger適合你。另一方面,如果你有許多復雜的作業(yè)調度,那么或許需要CronTrigger。

CronTrigger是基于Calendar-like調度的。當你需要在除星期六和星期天外的每天上午10點(diǎn)半執行作業(yè)時(shí),那么應該使用CronTrigger。正如它的名字所暗示的那樣,CronTrigger是基于Unix克隆表達式的。

作為一個(gè)例子,下面的Quartz克隆表達式將在星期一到星期五的每天上午10點(diǎn)15分執行一個(gè)作業(yè)。
0 15 10 ? * MON-FRI

下面的表達式
0 15 10 ? * 6L 2002-2005
將在2002年到2005年的每個(gè)月的最后一個(gè)星期五上午10點(diǎn)15分執行作業(yè)。

你不可能用SimpleTrigger來(lái)做這些事情。你可以用兩者之中的任何一個(gè),但哪個(gè)跟合適則取決于你的調度需要。


調度一個(gè)作業(yè)

讓我們通過(guò)看一個(gè)例子來(lái)進(jìn)入實(shí)際討論?,F假定你管理一個(gè)部門(mén),無(wú)論何時(shí)候客戶(hù)在它的FTP服務(wù)器上存儲一個(gè)文件,都得用電子郵件通知它。我們的作業(yè)將用FTP登陸到遠程服務(wù)器并下載所有找到的文件。然后,它將發(fā)送一封含有找到和下載的文件數量的電子郵件。這個(gè)作業(yè)很容易就幫助人們整天從手工執行這個(gè)任務(wù)中解脫出來(lái),甚至連晚上都無(wú)須考慮。我們可以設置作業(yè)循環(huán)不斷地每60秒檢查一次,而且工作在7×24模式下。這就是Quartz框架完全的用途。

首先創(chuàng )建一個(gè)Job類(lèi),將執行FTP和Email邏輯。下例展示了Quartz的Job類(lèi),它實(shí)現了org.quartz.Job接口。

例2.從FTP站點(diǎn)下載文件和發(fā)送email的Quartz作業(yè)

public class ScanFTPSiteJob implements Job {
    private static Log logger = LogFactory.getLog(ScanFTPSiteJob.class);

    /*
     * Called the scheduler framework at the right time
     */
    public void execute(JobExecutionContext context)
            throws JobExecutionException {

        JobDataMap jobDataMap = context.getJobDataMap();

        try {
            // Check the ftp site for files
            File[] files = JobUtil.checkForFiles(jobDataMap);

            JobUtil.sendEmail(jobDataMap, files);
        } catch (Exception ex) {
            throw new JobExecutionException(ex.getMessage());
        }
    }
}


我們故意讓ScanFTPSiteJob保持很簡(jiǎn)單。我們?yōu)檫@個(gè)例子創(chuàng )建了一個(gè)叫做JobUtil的實(shí)用類(lèi)。它不是Quartz的組成部分,但對構建各種作業(yè)能重用的實(shí)用程序庫來(lái)說(shuō)是有意義的。我們可以輕易將那種代碼組織進(jìn)作業(yè)類(lèi)中,quarts 調度器一樣好用,因為我們一直在使用quarts,所以那些代碼可繼續重用。

JobUtil.checkForFiles() and JobUtil.sendEmail()方法使用的參數是Quartz創(chuàng )建的JobDataMap的實(shí)例。實(shí)例為每個(gè)作業(yè)的執行而創(chuàng )建,它是向作業(yè)類(lèi)傳遞配置參數的方法。
這里并沒(méi)有展示JobUtil的實(shí)現,但我們能用Jakarta上的Commons Net輕易地實(shí)現FTP和Email功能。

用調度器調用作業(yè)

首先創(chuàng )建一個(gè)作業(yè),但為使作業(yè)能被調度器調用,你得向調度程序說(shuō)明你的作業(yè)的調用時(shí)間和頻率。這個(gè)事情由與作業(yè)相關(guān)的觸發(fā)器來(lái)完成。因為我們僅僅對大約每60秒循環(huán)調用作業(yè)感興趣,所以打算使用SimpleTrigger。

作業(yè)和觸發(fā)器通過(guò)Quartz調度器接口而被調度。我們需要從調度器工廠(chǎng)類(lèi)取得一個(gè)調度器的實(shí)例。最容易的辦法是調用StdSchedulerFactory這個(gè)類(lèi)上的靜態(tài)方法getDefaultScheduler()。
使用Quartz框架,你需要調用start()方法來(lái)啟動(dòng)調度器。例3的代碼遵循了大多數Quartz應用的一般模式:創(chuàng )建一個(gè)或多個(gè)作業(yè),創(chuàng )建和設置觸發(fā)器,用調度器調度作業(yè)和觸發(fā)器,啟動(dòng)調度器。

例3.Quartz作業(yè)通過(guò)Quartz調度器而被調度

public class MyQuartzServer {

    public static void main(String[] args) {
        MyQuartzServer server = new MyQuartzServer();

        try {
            server.startScheduler();
        } catch (SchedulerException ex) {
            ex.printStackTrace();
        }
    }

    protected void startScheduler() throws SchedulerException {

        // Use the factory to create a Scheduler instance
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

        // JobDetail holds the definition for Jobs
        JobDetail jobDetail =
new JobDetail("ScanFTPJob", Scheduler.DEFAULT_GROUP,
                ScanFTPSiteJob.class);

// Store job parameters to be used within execute()
jobDetail.getJobDataMap().put(
"FTP_HOST",
"\\home\\cavaness\\inbound");

        // Other neccessary Job parameters here

        // Create a Trigger that fires every 60 seconds
        Trigger trigger = TriggerUtils.makeSecondlyTrigger(60);
        
        // Setup the Job and Trigger with the Scheduler
        scheduler.scheduleJob(jobDetail, trigger );
        
        // Start the Scheduler running
        scheduler.start();
    }
}



編程調度同聲明性調度

例3中,我們通過(guò)編程的方法調度我們的ScanFTPSiteJob作業(yè)。就是說(shuō),我們用java代碼來(lái)設置作業(yè)和觸發(fā)器。Quartz框架也支持在xml文件里面申明性的設置作業(yè)調度。申明性方法允許我們更快速地修改哪個(gè)作業(yè)什么時(shí)候被執行。

Quartz框架有一個(gè)插件,這個(gè)插件負責讀取xml配置文件。xml配置文件包含了關(guān)于啟動(dòng)Quartz應用的作業(yè)和觸發(fā)器信息。所有xml文件中的作業(yè)連同相關(guān)的觸發(fā)器都被加進(jìn)調度器。你仍然需要編寫(xiě)作業(yè)類(lèi),但配置那些作業(yè)類(lèi)的調度器則非常動(dòng)態(tài)化。例4展示了一個(gè)用申明性方式執行與例3代碼相同的邏輯的xml配置文件。

例4.能使用xml文件調度的作業(yè)

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<quartz>
    <job>
        <job-detail>
            <name>ScanFTPSiteJob</name>
            <group>DEFAULT</group>
            <description>
                A job that scans an ftp site for files
            </description>
            <job-class>ScanFTPSiteJob</job-class>

            <job-data-map allows-transient-data="true">
                <entry>
                    <key>FTP_HOST</key>
                    <value>\home\cavaness\inbound</value>
                </entry>
                
                <!--  Other neccessary Job parameters here -->

            </job-data-map>
        </job-detail>

        <trigger>
            <simple>
                <name>ScanFTPSiteJobTrigger</name>
                <group>DEFAULT</group>
                <job-name>ScanFTPSiteJob</job-name>
                <job-group>DEFAULT</job-group>
                <start-time>2005-09-11 6:10:00 PM</start-time>
                <!-- repeat indefinitely every 60 seconds -->
                <repeat-count>-1</repeat-count>
                <repeat-interval>60000</repeat-interval>
            </simple>
        </trigger>

    </job>
</quartz>


你可以將xml文件中的元素跟例3代碼作個(gè)比較,它們從概念上來(lái)看是相同的。使用例4式的申明性方法的好處是維護變得極其簡(jiǎn)單,只需改變xml配置文件和重新啟動(dòng)Quartz應用即可。無(wú)須修改代碼,無(wú)須重新編譯,無(wú)須重新部署。

有狀態(tài)和無(wú)狀態(tài)作業(yè)

在本文中你所看到的作業(yè)到是無(wú)狀態(tài)的。這意味著(zhù)在兩次作業(yè)執行之間,不會(huì )去維護作業(yè)執行時(shí)JobDataMap的狀態(tài)改變。如果你需要能增、刪,改JobDataMap的值,而且能讓作業(yè)在下次執行時(shí)能看到這個(gè)狀態(tài)改變,則需要用Quartz有狀態(tài)作業(yè)。
如果你是一個(gè)有經(jīng)驗的EJB開(kāi)發(fā)者的話(huà),深信你會(huì )立即退縮,因為有狀態(tài)帶有負面含義。這主要是由于EJB帶來(lái)的伸縮性問(wèn)題。Quartz有狀態(tài)作業(yè)實(shí)現了org.quartz.StatefulJob接口。無(wú)狀態(tài)和有狀態(tài)作業(yè)的關(guān)鍵不同是有狀態(tài)作業(yè)在每次執行時(shí)只有一個(gè)實(shí)例。大多數情況下,有狀態(tài)的作業(yè)不回帶來(lái)大的問(wèn)題。然而,如果你有一個(gè)需要頻繁執行的作業(yè)或者需要很長(cháng)時(shí)間才能完成的作業(yè),那么有狀態(tài)作業(yè)可能給你帶來(lái)伸縮性問(wèn)題。

Quartz框架的其他特征

Quartz框架有一個(gè)豐富的特征集。事實(shí)上,quarts有太多特性以致不能在一種情況中全部領(lǐng)會(huì ),下面列出了一些有意思的特征,但沒(méi)時(shí)間在此詳細討論。

監聽(tīng)器和插件

每個(gè)人都喜歡監聽(tīng)和插件。今天,幾乎下載任何開(kāi)源框架,你必定會(huì )發(fā)現支持這兩個(gè)概念。監聽(tīng)是你創(chuàng )建的java類(lèi),當關(guān)鍵事件發(fā)生時(shí)會(huì )收到框架的回調。例如,當一個(gè)作業(yè)被調度、沒(méi)有調度或觸發(fā)器終止和不再打火時(shí),這些都可以通過(guò)設置來(lái)來(lái)通知你的監聽(tīng)器。Quartz框架包含了調度器監聽(tīng)、作業(yè)和觸發(fā)器監聽(tīng)。你可以配置作業(yè)和觸發(fā)器監聽(tīng)為全局監聽(tīng)或者是特定于作業(yè)和觸發(fā)器的監聽(tīng)。

一旦你的一個(gè)具體監聽(tīng)被調用,你就能使用這個(gè)技術(shù)來(lái)做一些你想要在監聽(tīng)類(lèi)里面做的事情。例如,你如果想要在每次作業(yè)完成時(shí)發(fā)送一個(gè)電子郵件,你可以將這個(gè)邏輯寫(xiě)進(jìn)作業(yè)里面,也可以JobListener里面。寫(xiě)進(jìn)JobListener的方式強制使用松耦合有利于設計上做到更好。

Quartz插件是一個(gè)新的功能特性,無(wú)須修改Quartz源碼便可被創(chuàng )建和添加進(jìn)Quartz框架。他為想要擴展Quartz框架又沒(méi)有時(shí)間提交改變給Quartz開(kāi)發(fā)團隊和等待新版本的開(kāi)發(fā)人員而設計。如果你熟悉Struts插件的話(huà),那么完全可以理解Quartz插件的使用。

與其Quartz提供一個(gè)不能滿(mǎn)足你需要的有限擴展點(diǎn),還不如通過(guò)使用插件來(lái)?yè)碛锌尚拚臄U展點(diǎn)。

集群Quartz應用
Quartz應用能被集群,是水平集群還是垂直集群取決于你自己的需要。集群提供以下好處:
·        伸縮性
·        搞可用性
·        負載均衡
目前,Quartz只能借助關(guān)系數據庫和JDBC作業(yè)存儲支持集群。將來(lái)的版本這個(gè)制約將消失并且用RAMJobStore集群將是可能的而且將不需要數據庫的支持。

Quartz web應用
使用框架幾個(gè)星期或幾個(gè)月后,Quartz用戶(hù)所顯示的需求之一是需要集成Quartz到圖形用戶(hù)界面中。目前Quartz框架已經(jīng)有一些工具允許你使用Java servlet來(lái)初始化和啟動(dòng)Quartz。一旦你可以訪(fǎng)問(wèn)調度器實(shí)例,你就可以把它存儲在web容器的servlet上下文中(ServletContext中)并且可以通過(guò)調度器接口管理調度環(huán)境。

幸運的是一些開(kāi)發(fā)者已正影響著(zhù)單機Quartz web應用,它用來(lái)更好地管理調度器環(huán)境。構建在若干個(gè)流行開(kāi)源框架如Struts和Spring之上的圖形用戶(hù)界面支持很多功能,這些功能都被包裝進(jìn)一個(gè)簡(jiǎn)單接口。GUI的一個(gè)畫(huà)面如圖1所示:



圖1.Quartz Web應用允許比較容易地管理Quartz環(huán)境。

Quartz的下一步計劃

Quartz是一個(gè)活動(dòng)中的工程。Quartz開(kāi)發(fā)團隊明確表示不會(huì )停留在已有的榮譽(yù)上。Quartz下一個(gè)主要版本已經(jīng)在啟動(dòng)中。你可以在OpenSymphony的 wiki上體驗一下Quartz 2.0的設計和特征。
總之,Quartz用戶(hù)每天都自由地添加特性建議和設計創(chuàng )意以便能被核心框架考慮(看重)。

了解更多Quartz特征

當你開(kāi)始使用Quartz框架的更多特性時(shí),User and Developer Forum論壇變成一個(gè)回答問(wèn)題和跟其他Quartz用戶(hù)溝通的極其有用的資源。經(jīng)常去逛逛這個(gè)論壇時(shí)很有好處的,你也可以依靠James House來(lái)共享與你的需要相關(guān)的知識和意見(jiàn)。

這個(gè)論壇時(shí)免費的,你不必登陸便可以查找和查看歸檔文件。然而,如果你覺(jué)得這個(gè)論壇比較好而且需要向某人回復問(wèn)題時(shí),你必須得申請一個(gè)免費賬號并用該賬號登陸。

資源
·onjava.com:onjava.com
·Matrix-Java開(kāi)發(fā)者社區:http://www.matrix.org.cn/

Chuck Cavaness畢業(yè)于Georgia Tech并獲得計算機科學(xué)與技術(shù)學(xué)位。他在健康,銀行,B2B領(lǐng)域開(kāi)發(fā)過(guò)基于java的企業(yè)系統。同時(shí)也是O‘Reilly出版的兩本書(shū)Programming Jakarta Struts 和 Jakarta Struts Pocket Reference的作者。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=534860


[收藏到我的網(wǎng)摘]   nimeimei發(fā)表于 2005年11月22日 17:09:00

相關(guān)文章:
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java框架介紹:Quartz從入門(mén)到進(jìn)階
Quartz中表及其表字段的意義
quartz使用案例篇【面試+工作】
企業(yè)級任務(wù)調度框架Quartz 三 一個(gè)簡(jiǎn)單的Quartz 例子
基于A(yíng)SP.NET MVC(C#)和Quartz.Net組件實(shí)現的定時(shí)執行任務(wù)調度
Quartz.NET 配置文件詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久