Web應(yīng)用與Quartz的整合研究
隨著信息技術(shù)的快速發(fā)展計(jì)算機(jī)軟件在各行各業(yè)中都扮演者相當(dāng)重要的角色發(fā)揮著促進(jìn)企業(yè)快速發(fā)展的重要作用。在各行各業(yè)的管理系統(tǒng)中,都可能會(huì)存在著系統(tǒng)數(shù)據(jù)定時(shí)備份,定時(shí)處理相對(duì)的業(yè)務(wù)功能、定時(shí)發(fā)送郵件或是在設(shè)定的特定時(shí)間間隔內(nèi)自動(dòng)執(zhí)行某個(gè)系統(tǒng)特定功能的調(diào)度任務(wù)的需求。使用定時(shí)任務(wù)調(diào)度框架Quartz就能夠的幫助企業(yè)快速高效的完成這種常規(guī)的或是復(fù)雜的調(diào)度作業(yè)的需求。
1 Quartz框架介紹
Quartz框架是一個(gè)具有強(qiáng)大的能夠靈活配置調(diào)度規(guī)則或是調(diào)度時(shí)間的的免費(fèi)開(kāi)源的一個(gè)任務(wù)調(diào)度框架。使用Quartz框架可以為企業(yè)信息管理系統(tǒng)的定時(shí)調(diào)度任務(wù)進(jìn)行簡(jiǎn)單快捷靈活的配置調(diào)度機(jī)制,實(shí)現(xiàn)企業(yè)常規(guī)和非常規(guī)的復(fù)雜的調(diào)度功能。開(kāi)發(fā)人員可以根據(jù)業(yè)務(wù)的具體需求設(shè)置調(diào)度的時(shí)間點(diǎn)或是時(shí)間間隔,來(lái)進(jìn)行具體的任務(wù)調(diào)度。Quartz框架能夠與Spring很好的集成提供強(qiáng)大的可靈活配置的調(diào)度功能并應(yīng)用到J2EE web應(yīng)用的開(kāi)發(fā)中,在企業(yè)應(yīng)用調(diào)度開(kāi)發(fā)中占有極其重要的地位,是目前使用最廣泛的任務(wù)調(diào)度框架。
任務(wù)調(diào)度器(scheduler)、觸發(fā)器(trigger)和任務(wù)(job)是任務(wù)調(diào)度框架Quartz的最重要的三大核心組件。其中調(diào)度任務(wù)的核心管理者是任務(wù)調(diào)度器(scheduler),調(diào)度任務(wù)的操作者是觸發(fā)器(trigger),調(diào)度任務(wù)(job)是系統(tǒng)中相應(yīng)的功能模塊。開(kāi)發(fā)人員可以根據(jù)具體的業(yè)務(wù)調(diào)度需求配置任務(wù)和觸發(fā)器的監(jiān)聽(tīng)規(guī)則,進(jìn)行任務(wù)調(diào)度。
調(diào)度器(Scheduler)是Quartz 框架最主要的核心模塊它對(duì)Quartz的應(yīng)用運(yùn)行的環(huán)境起到管理的作用,Quartz框架主要的API也是調(diào)度器(Scheduler)。對(duì)于Quartz開(kāi)發(fā)人員來(lái)說(shuō),Scheduler是Quartz調(diào)度框架與開(kāi)發(fā)人員發(fā)生交互的中間橋梁,大多數(shù)的交互過(guò)程都是以Scheduler為基礎(chǔ)進(jìn)行的。Scheduler通過(guò)與框架內(nèi)的各個(gè)JobDetail和trigger結(jié)合來(lái)進(jìn)行具體的調(diào)度工作的,而不是獨(dú)立的完成具體的調(diào)度任務(wù)。JobDetial和trigger只需要在Scheduler上裝配注冊(cè)好,調(diào)度作業(yè)就會(huì)伴隨著容器的啟動(dòng)自動(dòng)執(zhí)行。一個(gè)完整的Quartz調(diào)度任務(wù),必須包含觸發(fā)器(trigger),調(diào)度器(Scheduler)和任務(wù)(job)這三個(gè)最為重要的核心要素;觸發(fā)器就是一個(gè)任務(wù)的驅(qū)動(dòng)器,是負(fù)責(zé)對(duì)調(diào)度作業(yè)進(jìn)行定時(shí)驅(qū)動(dòng)的否則作業(yè)將無(wú)法正常執(zhí)行。一個(gè)調(diào)度任務(wù)可以與多個(gè)觸發(fā)器相對(duì)應(yīng),但是一個(gè)觸發(fā)器只能對(duì)應(yīng)一個(gè)任務(wù)對(duì)一個(gè)任務(wù)進(jìn)行驅(qū)動(dòng)。Quartz作為一個(gè)優(yōu)秀的開(kāi)源調(diào)度框架能夠與Spring集成實(shí)現(xiàn)強(qiáng)大的調(diào)度作業(yè)而且對(duì)運(yùn)行環(huán)境也沒(méi)有依賴,Quartz還提供了強(qiáng)大的集群以及分布式能力,其強(qiáng)大的調(diào)度機(jī)制支持多樣化的調(diào)度方法。
2 JDK Timer介紹
Timer為JDK自帶的任務(wù)調(diào)度工具類。結(jié)構(gòu)簡(jiǎn)單易用,功能也比較有限,而且容易出現(xiàn)誤差。Timer和TimerTask是使用Timer實(shí)現(xiàn)任務(wù)調(diào)度的兩個(gè)核心類。開(kāi)發(fā)人員使用Timer實(shí)現(xiàn)任務(wù)調(diào)度的功能必須創(chuàng)建一個(gè)繼承TimerTask的子類,而且重寫run()方法,然后Timer再采用單線程的方式去執(zhí)行調(diào)度任務(wù)。
Timer最大的優(yōu)點(diǎn)就是簡(jiǎn)單易用,但是Timer采用的是單線程的執(zhí)行方式同一時(shí)間只能有一個(gè)任務(wù)在執(zhí)行,同一時(shí)間沒(méi)有辦法執(zhí)行多個(gè)任務(wù)。當(dāng)遇到更多更復(fù)雜的調(diào)度需求時(shí),Timer難以滿足需求的變化。
3 ScheduledExecutor介紹
ScheduledExecutor是在Timer的基礎(chǔ)上擴(kuò)展的一個(gè)任務(wù)調(diào)度框架。ScheduledExecutor中的每一個(gè)調(diào)度任務(wù)都會(huì)由線程池中對(duì)應(yīng)的一個(gè)線程去執(zhí)行任務(wù)。ScheduledExecutor與Timer比較ScheduledExecutor中執(zhí)行的任務(wù)是可以并非執(zhí)行的,且任務(wù)的執(zhí)行之間是沒(méi)有影響的。ScheduledExecutor是一個(gè)比Timer更為通用的一個(gè)任務(wù)調(diào)度的通用品,它允許同時(shí)存在多個(gè)服務(wù)線程,且只需要實(shí)現(xiàn)Runnable接口,不需要繼承TimeTask。但是ScheduledExecutor跟Timer一樣都不能勝任更加復(fù)雜的調(diào)度需求,只能供基于開(kāi)始時(shí)間與重復(fù)間隔的任務(wù)調(diào)度。
Timer、ScheduledExecutor,跟Quartz比有一定的差距。相對(duì)于其他兩個(gè)調(diào)度工具而已Quartz具有更加強(qiáng)大且靈活的配置規(guī)則,能夠快捷的配置實(shí)現(xiàn)復(fù)雜的調(diào)度需求。如果你只需要特別簡(jiǎn)單的任務(wù)調(diào)度,那么Timer就可以滿足需求。如果你的調(diào)度需求比較復(fù)雜,使用Quartz要比Timer、ScheduledExecutor簡(jiǎn)單。
4 Quartz整合Web的實(shí)現(xiàn)過(guò)程
整個(gè)整合過(guò)程主要可分為三步;第一步配置web.xml文件, web.xml文件在整個(gè)web應(yīng)用中一個(gè)載體的角色,用來(lái)調(diào)度配置應(yīng)用信息。第二步配置quartz.properties主要完成一些調(diào)度參數(shù)的設(shè)置。第三不編寫調(diào)度任務(wù)的實(shí)現(xiàn)類,在實(shí)現(xiàn)類中實(shí)現(xiàn)業(yè)務(wù)的調(diào)度邏輯。以下就是整合過(guò)程的詳細(xì)過(guò)程。
4.1 web.xml中配置Spring
配置spring、struts2用來(lái)初始化配置信息。
4.2配置quartz.properties
開(kāi)發(fā)人員根據(jù)具體業(yè)務(wù)的調(diào)度需求在quartz.properties這個(gè)配置文件中配置自己業(yè)務(wù)需求的一些特定的參數(shù),如相應(yīng)的時(shí)間間隔或是時(shí)間點(diǎn)這類的調(diào)度信息。
Spring應(yīng)用啟動(dòng)后就會(huì)按照配置好的信息啟動(dòng)調(diào)度任務(wù),當(dāng)然也可以單獨(dú)整合集成quartz,并不一定要使用Spring。
4.3 編寫目標(biāo)類
目標(biāo)類是整個(gè)調(diào)度任務(wù)的最關(guān)鍵的類,在這類里面開(kāi)發(fā)人員實(shí)現(xiàn)自己的調(diào)度邏輯,這個(gè)類必須繼承QuartzJobBean,在work方法里面實(shí)現(xiàn)調(diào)度邏輯。
本文介紹了JDK Timer、ScheduledExecutor、Quartz框架的功能、特點(diǎn)以及這三個(gè)工具的優(yōu)缺點(diǎn),以及如何將Quartz與Spring結(jié)合應(yīng)用到Web開(kāi)發(fā)中。建立了一個(gè)可以滿足企業(yè)常規(guī)調(diào)度需求的簡(jiǎn)單可用的調(diào)度系統(tǒng),而且具有良好的擴(kuò)展性與靈活性。
本文來(lái)源:《企業(yè)科技與發(fā)展》:http://m.00559.cn/w/qk/21223.html
欄目分類
- 1智能家居發(fā)展現(xiàn)狀及未來(lái)
- 2中國(guó)VR技術(shù)發(fā)展現(xiàn)狀、應(yīng)用前景與對(duì)策研究
- 3淺談霍爾效應(yīng)及其應(yīng)用
- 4收入確認(rèn)與計(jì)量的"五步法"模型實(shí)務(wù)探討
- 5趣味浮力探究實(shí)驗(yàn)
- 6人工智能技術(shù)在傳播領(lǐng)域的應(yīng)用與展望
- 7智能溫度控制系統(tǒng)
- 8基于OpenCV的車道線識(shí)別與跟蹤算法
- 9國(guó)內(nèi)外廢紙分類標(biāo)準(zhǔn)對(duì)比和分析
- 10共享汽車行業(yè)和諧發(fā)展的swot分析
- 為什么發(fā)表論文都不開(kāi)雜志社的發(fā)票呢?
- 2021-2022年CSCD中國(guó)科學(xué)引文數(shù)據(jù)庫(kù)來(lái)源期刊列表-理科南大核心目錄完整版
- CSCD中國(guó)科學(xué)引文數(shù)據(jù)庫(kù)來(lái)源期刊列表(2023-2024年度)南大核心目錄
- 融媒體環(huán)境下地方新聞網(wǎng)站媒體的發(fā)展路徑
- 創(chuàng)新與繼承:70周年獻(xiàn)禮片“三杰”研究
- 人本導(dǎo)向下的城市更新規(guī)劃思路探索——以上海松江區(qū)中山街道老城區(qū)為例
- 預(yù)制裝配式地鐵車站施工技術(shù)
- 從框架理論看“中國(guó)學(xué)習(xí)的人”
- 互聯(lián)網(wǎng)環(huán)境下古都洛陽(yáng)城市形象建構(gòu)與傳播探析
- 價(jià)值工程在房地產(chǎn)開(kāi)發(fā)管理分工中應(yīng)用
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 官方認(rèn)定!CSSCI南大核心首批191家“青年學(xué)者友好期刊名單”
- 2023JCR影響因子正式公布!
- 國(guó)內(nèi)核心期刊分級(jí)情況概覽及說(shuō)明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個(gè)很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問(wèn)題”。
- 重磅!CSSCI來(lái)源期刊(2023-2024版)最新期刊目錄看點(diǎn)分析!全網(wǎng)首發(fā)!
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個(gè)知識(shí)點(diǎn)。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點(diǎn)那些評(píng)職稱超管用的資源,1,3和5已經(jīng)“絕種”了