• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Quartz與Spring的動態(tài)任務(wù)調(diào)度系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2014-04-29 00:00:00劉志鵬衛(wèi)晨

      摘 要:本文介紹了Quartz框架的功能和特點(diǎn),將Quartz框架和Spring框架進(jìn)行整合,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)動態(tài)任務(wù)調(diào)度系統(tǒng),該系統(tǒng)簡化了Java EE Web系統(tǒng)中任務(wù)調(diào)度功能的開發(fā),使得任務(wù)調(diào)度變的靈活和簡單。

      關(guān)鍵詞:Quartz;Spring;Java EE

      中圖分類號:TP311.52

      隨著計(jì)算機(jī)軟件的快速發(fā)展和普及,企業(yè)開始越來越多地利用軟件來提高生產(chǎn)和管理效率。企業(yè)信息化建設(shè)的程度對于提升企業(yè)的競爭力有著重大的影響。隨著軟件技術(shù)的不斷創(chuàng)新和發(fā)展,針對企業(yè)信息系統(tǒng)各方面需求也產(chǎn)生了許多新技術(shù),比如定時(shí)任務(wù)。

      在我們的管理信息系統(tǒng)可能經(jīng)常需要完成定時(shí)任務(wù)。比如:每天晚上,或許僅僅每個(gè)月的最后一天備份數(shù)據(jù)或者向指定地址發(fā)送郵件等,Quartz框架就可以幫助企業(yè)實(shí)現(xiàn)這種功能。

      1 Quartz框架介紹

      Quartz是OpenSymphony開源組織在的一個(gè)開源項(xiàng)目,它能夠創(chuàng)建調(diào)度來執(zhí)行一個(gè)作業(yè),可以與Java項(xiàng)目進(jìn)行集成。

      Quartz框架的核心是調(diào)度器。調(diào)度器負(fù)責(zé)管理Quartz應(yīng)用運(yùn)行時(shí)環(huán)境。調(diào)度器不是靠自己做所有的工作,而是依賴框架內(nèi)一些非常重要的部件。為確??缮炜s性,Quartz采用了基于多線程的架構(gòu)。啟動時(shí),框架初始化一套worker線程,這套線程被調(diào)度器用來執(zhí)行預(yù)定的作業(yè)。Quartz依賴一套松耦合的線程池管理部件來管理線程環(huán)境。Quartz對任務(wù)調(diào)度的領(lǐng)域問題進(jìn)行了高度的抽象,提出了調(diào)度器(Scheduler)、任務(wù)(Job)和觸發(fā)器(Trigger)這3個(gè)核心的概念。

      2 Quartz框架核心

      核心接口。Job:是一個(gè)任務(wù)接口,包含一個(gè)void execute(JobExecutionContext context)方法,該方法用來定義任務(wù),JobExecutionContext類提供了調(diào)度上下文包含的各種信息。Job運(yùn)行時(shí)的信息保存在JobDataMap實(shí)例中。

      JobDetail:Quartz在每次執(zhí)行Job時(shí),都重新創(chuàng)建一個(gè)Job實(shí)例,該實(shí)例必須是Job的實(shí)現(xiàn)類,是通過newInstance()的反射機(jī)制進(jìn)行實(shí)例化。因此需要通過JobDetail類來描述Job的實(shí)現(xiàn)類及其它相關(guān)的靜態(tài)信息,如Job名字、描述、關(guān)聯(lián)監(jiān)聽器等信息。

      Trigger:是描述觸發(fā)Job執(zhí)行的時(shí)間觸發(fā)規(guī)則的類。主要有SimpleTrigger和CronTrigger這兩個(gè)子類。SimpleTrigger適合僅需觸發(fā)一次或者固定時(shí)間間隔周期執(zhí)行的任務(wù),而CronTrigger則可以通過Cron表達(dá)式定義出任意規(guī)則的調(diào)度方案。

      Scheduler:是Trigger和JobDetail注冊的獨(dú)立運(yùn)行容器,兩者在Scheduler中擁有各自的組及名稱,組及名稱是Scheduler查找定位容器中某一對象的依據(jù),Trigger和Trigger和JobDetail可以注冊到Scheduler中的組及名稱必須唯一。Scheduler定義了多個(gè)接口方法,允許外部通過組及名稱訪問和控制容器中Trigger和JobDetail。

      3 動態(tài)調(diào)度系統(tǒng)設(shè)計(jì)

      動態(tài)調(diào)度系統(tǒng)是將任務(wù)的開發(fā)和任務(wù)的調(diào)度分離。任務(wù)由開發(fā)人員開發(fā),開發(fā)人員不需要考慮任務(wù)的調(diào)度問題,只需要考慮任務(wù)做什么即可;任務(wù)調(diào)度由用戶操作,用戶可以根據(jù)自身情況進(jìn)行調(diào)度,包括調(diào)度設(shè)置、開始、暫停。系統(tǒng)設(shè)計(jì)時(shí),為了使任務(wù)開發(fā)簡單,開發(fā)人員在進(jìn)行任務(wù)開發(fā)時(shí),只需要實(shí)現(xiàn)XyJob接口,該接口繼承自Job接口,是用來定義任務(wù)的,包含2個(gè)方法execute(JobExecutionContext arg0)是任務(wù)執(zhí)行的方法,getName()獲取當(dāng)前任務(wù)的名稱。當(dāng)Spring容器啟動后,系統(tǒng)自動檢測所有實(shí)現(xiàn)XyJob接口的類,并將其初始化為任務(wù),在初始化的過程中,系統(tǒng)會讀取用戶已經(jīng)設(shè)置的調(diào)度信息。用戶可以通過頁面查看系統(tǒng)中的所有任務(wù),并且可以進(jìn)行任務(wù)調(diào)度設(shè)置、開啟、暫停操作,如圖1所示。

      圖1

      4 動態(tài)調(diào)度系統(tǒng)實(shí)現(xiàn)

      4.1 系統(tǒng)配置

      要在Java Web項(xiàng)目中使用Quartz,首先需要引入相關(guān)jar包。其次,需要在Spring的applicationContext.xml文件中添加以下配置,該配置可以使得spring為Quartz創(chuàng)建Scheduler容器。

      class=\"org.springframework.scheduling.quartz.SchedulerFactoryBean\">

      4.2 系統(tǒng)實(shí)現(xiàn)

      Spring將所有已經(jīng)實(shí)現(xiàn)XyJob接口的類進(jìn)行實(shí)例化,并將實(shí)例化后的對象注入到一個(gè)List集合中。當(dāng)Spring容器初始化成功后,開始將所有的XyJob對象注冊到Scheduler容器中,注冊過程中會讀取用戶設(shè)置的Crom表達(dá)式,并將其應(yīng)用到任務(wù)中。

      圖2 初始化任務(wù)

      當(dāng)需要查詢所有任務(wù)時(shí),通過任務(wù)的getName()方法獲得任務(wù)名稱,再通過任務(wù)名稱去Scheduler容器中查詢該任務(wù)的當(dāng)前狀態(tài)。

      5 結(jié)束語

      本文在分析了Quartz框架的功能和特點(diǎn),通過對Quartz的研究,將Spring與Quartz框架整合,建立了一個(gè)動態(tài)任務(wù)調(diào)度系統(tǒng)。該系統(tǒng)的設(shè)計(jì)使得任務(wù)的開發(fā)和任務(wù)的調(diào)度相分離,開發(fā)人員只需實(shí)現(xiàn)接口來定義任務(wù),用戶來進(jìn)行調(diào)度設(shè)置。該系統(tǒng)提高了任務(wù)調(diào)度的靈活性,可以適用于任何企業(yè)的任務(wù)調(diào)度需求;同時(shí)又降低了開發(fā)難度,減少了開發(fā)時(shí)間,提高了開發(fā)效率。

      參考文獻(xiàn):

      [1]胡利強(qiáng),周冬初,王偉.Quartz調(diào)度器與Web程序整合的研究和應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2010(08):98-99.

      [2]計(jì)文柯.Spring技術(shù)內(nèi)幕(第2版)[M].北京:機(jī)械工業(yè)出版社,2012.

      [3]http://www.quartz-scheduler.org/documentation[OL].

      [4]http://www.blogjava.net/baoyaer/articles/155645.html[OL].

      作者簡介:劉志鵬(1985-),男,陜西西安人,碩士,研究方向:煤炭企業(yè)供應(yīng)鏈電子商務(wù)、物流信息系以及集成供應(yīng)鏈系統(tǒng)。

      作者單位:西安郵電大學(xué) 經(jīng)濟(jì)與管理學(xué)院,西安 710061

      基金項(xiàng)目:西安郵電大學(xué)校青年教師科研基金項(xiàng)目(項(xiàng)目編號:ZL2014-49)。

      临桂县| 谢通门县| 平凉市| 竹山县| 安宁市| 香河县| 民权县| 盐亭县| 望都县| 长治市| 方山县| 武城县| 河源市| 明水县| 盐山县| 灵寿县| 正定县| 望江县| 无棣县| 九台市| 石城县| 深水埗区| 宁津县| 海晏县| 铜川市| 巴彦淖尔市| 长乐市| 类乌齐县| 东乡| 平陆县| 沈阳市| 宁德市| 连城县| 永仁县| 海淀区| 沅陵县| 贵阳市| 黑龙江省| 阳东县| 分宜县| 五河县|