成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring對Quartz任務調度提供支持

開發 后端
本文介紹哦Spring對Quartz任務調度提供支持,以及介紹了imagedb中ListImagesQuartzJob的定義。

Spring框架提供了豐富的Quartz任務調度支持,比如,在何時執行何種任務,它是一個開源的由OpenSymphony維護的項目,開發者能夠在 Java EE,或單獨的Java SE應用中使用它。無論是簡單的任務調度,還是復雜的企業級應用,Quartz都能夠很好地勝任。其中,這些任務可以是普通POJO,甚至還可以是EJB 3.0組件。

如果開發者需要開發如下方面的應用,則Quartz是理想的選擇。


◆驅動工作流:比如,如果新創建的流程任務需要在2小時內處理完,則在2小時后Quartz會檢查訂單是否成功處理。如果沒有處理,則Quartz會依據工作流定義的規則來對訂單進行處理,銷毀它,或者進行其他處理。
◆系統維護工作:比如,在每個工作日的固定時間將RDBMS中的內容導出為XML文件。

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

  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. }  

開發者可以通過executeInternal()方法指定待完成的用戶任務,而通過傳入它的context能夠獲得任務執行的上下文信息,比如,下次執行用戶任務的時間。隨后,我們要指定相應的調度規則,下面給出了context/WEB-INF/schedulingContext- quartz.xml中的相關配置信息。JobDetailBean是Quartz中org.quartz.JobDetail的子類,Spring為簡化JobDetail子類的開發而提供了JobDetailBean。借助于JobDetailBean中的jobClass屬性能夠設置Job對象類型,而借助于jobDataAsMap屬性能夠為ListImagesQuartzJob的各個屬性提供目標取值。

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

SimpleTriggerBean是Quartz中org.quartz.SimpleTrigger的子類,為簡化SimpleTrigger 子類的開發,Spring提供了它。為指定調度規則,開發者需要使用它設定運行任務的頻率和時機。SimpleTriggerBean同Timer任務調度中的ScheduledTimerTask類似,但功能上比它更強大。此時,SimpleTriggerBean暴露的startDelay屬性的含義同ScheduledTimerTask中的delay屬性,而repeatInterval屬性同period屬性。

為了指定更復雜的任務調度規則,開發者要使用Spring提供的CronTriggerBean,它是Quartz中 org.quartz.CronTrigger的子類,Spring 2.0為簡化CronTrigger子類的開發而提供了CronTriggerBean。CronTriggerBean比 SimpleTriggerBean功能更強大,它能夠控制任務執行的精確時間,比如,早上九點半需要執行某QuartzJobBean中給定的任務。借助于CronTriggerBean中的cronExpression屬性能夠設定任務的執行時機。下面展示了相應的配置示例。

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

上述配置片斷還使用到MethodInvokingJobDetailFactoryBean,它能夠將普通的POJO指定為用戶任務。這也是Spring Quartz任務調度集成支持的另一種指定用戶任務的策略。

在制訂上述2條調度規則后,開發者要實施它們,而SchedulerFactoryBean能夠擔當此任,示例配置如下。借助于triggers屬性,開發者能夠指定由若干SimpleTriggerBean和CronTriggerBean構成的集合;借助于quartzProperties屬性,開發者能夠控制Quartz的具體細節,比如,線程池中線程的數量。

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

【編輯推薦】

  1. Spring框架的7個模塊
  2. 簡述Spring JDBC的學習
  3. Spring 2.0和Spring AOP
  4. 整合Struts和Spring
  5. Spring2.0升級Spring2.0.7的變化
責任編輯:佚名 來源: 百度博客
相關推薦

2013-05-20 10:38:02

Quartz企業級開發任務調度

2022-07-26 16:54:08

QuartzJava

2024-06-11 08:30:25

Quartz.NET開源任務調度庫

2023-12-26 07:44:00

Spring定時調度

2023-06-29 07:55:52

Quartz.Net開源

2014-04-24 10:06:01

OpenStackDocker

2009-06-26 14:04:15

Quartz配置

2009-06-18 10:21:22

Spring的支持Sun GlassFi

2024-05-13 09:49:30

.NETQuartz庫Cron表達式

2017-03-07 17:57:45

NASITSAN

2022-03-23 11:45:39

Quartz數據庫節點

2014-04-24 09:52:54

Akamai

2023-05-08 16:38:46

任務調度分布式任務調度

2023-07-31 08:05:30

Spring任務調度

2021-05-13 12:00:51

cron調度任務系統運維

2013-12-17 10:15:19

OpenMP任務調度

2020-04-01 16:10:02

PythonAPScheduler調度

2011-03-30 14:29:13

QuartzJava

2024-07-08 00:00:02

.NET系統調度器

2021-05-20 09:50:20

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合久久久 | 日韩欧美在线播放 | 国产美女免费视频 | 91久久精品一区二区二区 | 黄色一级在线播放 | sese视频在线观看 | 日本精品视频在线 | 欧美一级www片免费观看 | 日韩欧美三级电影在线观看 | 久久久久久久综合 | 中文在线一区 | 先锋av资源在线 | 日韩视频在线免费观看 | 亚洲精品日韩精品 | 国产精品美女久久久久久不卡 | 久久99国产精品久久99果冻传媒 | 美女午夜影院 | 中文字幕精品一区二区三区精品 | 国产精品高潮呻吟久久 | 日韩在线中文 | 男女啪啪高潮无遮挡免费动态 | 国产精品视频久久久久久 | 久草99| 91在线第一页 | 99re热精品视频国产免费 | 91精品国产91久久综合桃花 | 午夜精品久久久久久 | 欧美理伦片在线播放 | 在线免费毛片 | 九色av | 欧美精品在线观看 | 毛片免费观看 | 蜜桃av鲁一鲁一鲁一鲁 | 日韩综合| 色本道 | 日韩中文字幕一区二区 | 青青草华人在线视频 | 免费看黄视频网站 | 国产精品日女人 | 精品国产乱码久久久久久88av | 亚洲一区二区三区欧美 |