葛萬標(biāo) 李江冰
摘要:隨著WEB工程的應(yīng)用,在使用的過程中會遇到大量的數(shù)據(jù)或者文件的生成,同時在處理數(shù)據(jù)或者文件的時候,需要動態(tài)的展示處理的結(jié)果,這就增加了WEB工程的復(fù)雜性和難度.異步處理數(shù)據(jù)的DWR框架和Quartz定時調(diào)度有效的解決了這一問題.本文簡要闡述Quartz與DWR的原理以及在WEB工程中的綜合應(yīng)用。
關(guān)鍵詞: DWR;Quartz;WEB工程
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2014)28-6761-03
在WEB工程中,為了提高整個應(yīng)用的功能性問題,有些工作需要間隔一段時間去執(zhí)行,并且需要將執(zhí)行的結(jié)果呈現(xiàn)出來,將處理的過程動態(tài)的加載,提高工作效率,同時也增加客戶的友好性體驗,以文件的生成為例,Quartz主要是負責(zé)定時調(diào)度任務(wù)創(chuàng)建文件,DWR框架用來獲取處理結(jié)果,并給出提示信息.
1 Quartz與DWR的原理
1.1 Quartz作業(yè)調(diào)度框架
Quartz是OpenSymphony開源組織在Job scheduling領(lǐng)域又一個開源項目,它可以與J2EE與J2SE應(yīng)用程序相結(jié)合也可以單獨使用。Quartz可以用來創(chuàng)建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復(fù)雜的程序.Jobs可以做成標(biāo)準(zhǔn)的Java組件或 EJBs.
Quartz提供了強大任務(wù)調(diào)度機制, 允許開發(fā)人員靈活地定義觸發(fā)器的調(diào)度時間表,并可以對觸發(fā)器和任務(wù)進行關(guān)聯(lián)映射.提供了調(diào)度運行環(huán)境的持久化機制,可以保存并恢復(fù)調(diào)度現(xiàn)場,即使系統(tǒng)因故障關(guān)閉,任務(wù)調(diào)度現(xiàn)場數(shù)據(jù)并不會丟失.
Quartz的幾個核心概念:
CronTriggerBean:調(diào)度觸發(fā)器:觸發(fā)器定義了對作業(yè)的調(diào)度,一旦被調(diào)用就會根據(jù)cron表達式里面的設(shè)置對作業(yè)進行調(diào)度.cron表達式包括以下7個字段:秒、分、小時、月內(nèi)日期、月、周內(nèi)日期、年(可選字段),主要設(shè)置作業(yè)運行的時間
MethodInvokingJobDetailFactoryBean:作業(yè)工廠.觸發(fā)的具體的作業(yè)執(zhí)行的方法, 在具體執(zhí)行待調(diào)度任務(wù)的method前后加入公用邏輯,比如記錄開始、結(jié)束日期、判斷該task是否由該臺服務(wù)器執(zhí)行、任務(wù)執(zhí)行完成之后將運行結(jié)果進行持久化或者發(fā)email等
SchedulerFactoryBean:調(diào)度器.調(diào)度器可以包含具體的JobDetail+CronTrigger的組合,其中一個JobDetail可以和多個CronTrigger關(guān)聯(lián)
1.2 DWR框架
DWR是一個便于從JavaScript調(diào)用Java函數(shù)和從Java調(diào)用JavaScript函數(shù)遠程過程調(diào)用協(xié)議,它可以允許運行在瀏覽器中的代碼執(zhí)行WEB服務(wù)器上的代碼,用JavaScript腳本語言直接調(diào)用后臺業(yè)務(wù)商業(yè)組件的解決方案,采用無刷新頁面的方式從遠程服務(wù)端獲取數(shù)據(jù),不僅提高頁面的響應(yīng)時間,而且也不會影響到用戶因為刷新頁面帶來的心理感覺.
DWR采用純JavaScript在瀏覽器中實現(xiàn),并且會根據(jù)瀏覽器類型采用最高的執(zhí)行效率的遠程調(diào)用機制,同時WEB開發(fā)人員必須配置哪些JAVA類可以安全的被外部使用
2 在WEB工程中的綜合應(yīng)用
2.1配置調(diào)度任務(wù)
<!—lazy-init設(shè)置為false表明容器啟動就會自動加載—>
<!—可以定義多個調(diào)度觸發(fā)器—>
<!— 定時生成文件 —>
<!—createFilesActuatorBean為具體的方法—>
<!— 每隔30秒執(zhí)行一次 創(chuàng)建文件 —>
2.2 DWR配置(導(dǎo)入相應(yīng)的jar包)
在web.xml里面配置,配置文件如下
<!—初始化參數(shù)—>
}}});
}
<%— 啟動頁面定時任務(wù)(創(chuàng)建文件) —%>
function startTaskCreateFile(){
timerTask = setInterval("checkCreateFileStatus()",taskPeriod*1000);
}