日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Spring對(duì)Quartz任務(wù)調(diào)度提供支持

Spring框架提供了豐富的Quartz任務(wù)調(diào)度支持,比如,在何時(shí)執(zhí)行何種任務(wù),它是一個(gè)開(kāi)源的由OpenSymphony維護(hù)的項(xiàng)目,開(kāi)發(fā)者能夠在 Java EE,或單獨(dú)的Java SE應(yīng)用中使用它。無(wú)論是簡(jiǎn)單的任務(wù)調(diào)度,還是復(fù)雜的企業(yè)級(jí)應(yīng)用,Quartz都能夠很好地勝任。其中,這些任務(wù)可以是普通POJO,甚至還可以是EJB 3.0組件。

成都創(chuàng)新互聯(lián)公司提供高防主機(jī)、云服務(wù)器、香港服務(wù)器、資陽(yáng)移動(dòng)機(jī)房

如果開(kāi)發(fā)者需要開(kāi)發(fā)如下方面的應(yīng)用,則Quartz是理想的選擇。

◆驅(qū)動(dòng)工作流:比如,如果新創(chuàng)建的流程任務(wù)需要在2小時(shí)內(nèi)處理完,則在2小時(shí)后Quartz會(huì)檢查訂單是否成功處理。如果沒(méi)有處理,則Quartz會(huì)依據(jù)工作流定義的規(guī)則來(lái)對(duì)訂單進(jìn)行處理,銷毀它,或者進(jìn)行其他處理。
◆系統(tǒng)維護(hù)工作:比如,在每個(gè)工作日的固定時(shí)間將RDBMS中的內(nèi)容導(dǎo)出為XML文件。

Spring 2.0提供了org.springframework.scheduling.quartz包,以支持Quartz任務(wù)調(diào)度集成。為提供用戶的任務(wù),開(kāi)發(fā)者實(shí)現(xiàn)的類必須繼承于quartz.QuartzJobBean抽象類。QuartzJobBean是Quartz中org.quartz.Job接口的簡(jiǎn)單實(shí)現(xiàn)(子類),Spring為簡(jiǎn)化Job接口的實(shí)現(xiàn)而提供了QuartzJobBean類。QuartzJobBean同Java 2 SDK中的TimerTask類似,用于定義任務(wù)本身。其中,executeInternal()方法定義待執(zhí)行的任務(wù),這同TimerTask中的 run()類似。下面給出了imagedb中ListImagesQuartzJob的定義,它同ListImagesTimerTask幾乎沒(méi)有區(qū)別。

  1. public class ListImagesQuartzJob extends QuartzJobBean {  
  2. private ImageDatabase imageDatabase;  
  3. private MailSender mailSender;  
  4. private String mailFrom;  
  5. private String mailTo;  
  6. public void setImageDatabase(ImageDatabase imageDatabase) {  
  7. this.imageDatabase = imageDatabase;  
  8. }  
  9. public void setMailSender(MailSender mailSender) {  
  10. this.mailSender = mailSender;  
  11. }  
  12. public void setMailFrom(String mailFrom) {  
  13. this.mailFrom = mailFrom;  
  14. }  
  15. public void setMailTo(String mailTo) {  
  16. this.mailTo = mailTo;  
  17. }  
  18. protected void executeInternal(JobExecutionContext context) {  
  19. ......  
  20. logger.info("Next job execution at: " + context.getNextFireTime());  
  21. }  

開(kāi)發(fā)者可以通過(guò)executeInternal()方法指定待完成的用戶任務(wù),而通過(guò)傳入它的context能夠獲得任務(wù)執(zhí)行的上下文信息,比如,下次執(zhí)行用戶任務(wù)的時(shí)間。隨后,我們要指定相應(yīng)的調(diào)度規(guī)則,下面給出了context/WEB-INF/schedulingContext- quartz.xml中的相關(guān)配置信息。JobDetailBean是Quartz中org.quartz.JobDetail的子類,Spring為簡(jiǎn)化JobDetail子類的開(kāi)發(fā)而提供了JobDetailBean。借助于JobDetailBean中的jobClass屬性能夠設(shè)置Job對(duì)象類型,而借助于jobDataAsMap屬性能夠?yàn)長(zhǎng)istImagesQuartzJob的各個(gè)屬性提供目標(biāo)取值。

  1.  id="listImagesJobDetail" class="org.springframework.scheduling.quartz.  
  2. JobDetailBean"> 
  3.  name="jobClass" value="org.springframework.samples.imagedb.  
  4. scheduling.ListImagesQuartzJob"/> 
  5.  name="jobDataAsMap"> 
  6.  
  7.  key="imageDatabase" value-ref="imageDatabase"/> 
  8.  key="mailSender" value-ref="mailSender"/> 
  9.  key="mailFrom" value="${mail.from}"/> 
  10.  key="mailTo" value="${mail.to}"/> 
  11. map> 
  12. property> 
  13. bean> 
  14.  id="listImagesTrigger" class="org.springframework.scheduling.quartz.  
  15. SimpleTriggerBean"> 
  16.  name="jobDetail" ref="listImagesJobDetail"/> 
  17.  name="startDelay" value="10000"/> 
  18.  name="repeatInterval" value="10000"/> 
  19. bean> 

SimpleTriggerBean是Quartz中org.quartz.SimpleTrigger的子類,為簡(jiǎn)化SimpleTrigger 子類的開(kāi)發(fā),Spring提供了它。為指定調(diào)度規(guī)則,開(kāi)發(fā)者需要使用它設(shè)定運(yùn)行任務(wù)的頻率和時(shí)機(jī)。SimpleTriggerBean同Timer任務(wù)調(diào)度中的ScheduledTimerTask類似,但功能上比它更強(qiáng)大。此時(shí),SimpleTriggerBean暴露的startDelay屬性的含義同ScheduledTimerTask中的delay屬性,而repeatInterval屬性同period屬性。

為了指定更復(fù)雜的任務(wù)調(diào)度規(guī)則,開(kāi)發(fā)者要使用Spring提供的CronTriggerBean,它是Quartz中 org.quartz.CronTrigger的子類,Spring 2.0為簡(jiǎn)化CronTrigger子類的開(kāi)發(fā)而提供了CronTriggerBean。CronTriggerBean比 SimpleTriggerBean功能更強(qiáng)大,它能夠控制任務(wù)執(zhí)行的精確時(shí)間,比如,早上九點(diǎn)半需要執(zhí)行某QuartzJobBean中給定的任務(wù)。借助于CronTriggerBean中的cronExpression屬性能夠設(shè)定任務(wù)的執(zhí)行時(shí)機(jī)。下面展示了相應(yīng)的配置示例。

  1.  id="checkImagesJobDetail" 
  2. class="org.springframework.scheduling.quartz.  
  3. MethodInvokingJobDetailFactoryBean"> 
  4.  name="targetObject" ref="imageDatabase"/> 
  5.  name="targetMethod" value="checkImages"/> 
  6.  name="concurrent" value="true"/> 
  7. bean> 
  8.  id="checkImagesTrigger" 
  9. class="org.springframework.scheduling.quartz.CronTriggerBean"> 
  10.  name="jobDetail" ref="checkImagesJobDetail"/> 
  11.  name="cronExpression" value="0/5 * * * * ?"/> 
  12. bean> 

上述配置片斷還使用到MethodInvokingJobDetailFactoryBean,它能夠?qū)⑵胀ǖ腜OJO指定為用戶任務(wù)。這也是Spring Quartz任務(wù)調(diào)度集成支持的另一種指定用戶任務(wù)的策略。

在制訂上述2條調(diào)度規(guī)則后,開(kāi)發(fā)者要實(shí)施它們,而SchedulerFactoryBean能夠擔(dān)當(dāng)此任,示例配置如下。借助于triggers屬性,開(kāi)發(fā)者能夠指定由若干SimpleTriggerBean和CronTriggerBean構(gòu)成的集合;借助于quartzProperties屬性,開(kāi)發(fā)者能夠控制Quartz的具體細(xì)節(jié),比如,線程池中線程的數(shù)量。

  1.  id="scheduler" class="org.springframework.scheduling.quartz.  
  2. SchedulerFactoryBean"> 
  3.  name="triggers"> 
  4.  
  5.  local="listImagesTrigger"/> 
  6.  local="checkImagesTrigger"/> 
  7. list> 
  8. property> 
  9.  name="quartzProperties"> 
  10.  
  11.  key="org.quartz.threadPool.threadCount">5 prop> 
  12. props> 
  13. property> 
  14. bean> 

本文名稱:Spring對(duì)Quartz任務(wù)調(diào)度提供支持
網(wǎng)站URL:http://m.5511xx.com/article/cdggdoo.html