Quartz結合Spring框架在真實項目中的使用
需求:在某個時間做某件事,任務是動態的,到點就要執行
在spring的配置文件中加入如下配置
<!-- quartz配置 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="schedulerContextAsMap"> <map> <entry key="timeout" value="30" /> </map> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop> <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop> <prop key="org.quartz.jobStore.dataSource">qzDS</prop> <prop key="org.quartz.dataSource.qzDS.driver">${driverClass}</prop> <prop key="org.quartz.dataSource.qzDS.URL">${jdbcUrl}</prop> <prop key="org.quartz.dataSource.qzDS.user">${username}</prop> <prop key="org.quartz.dataSource.qzDS.password">${password}</prop> <prop key="org.quartz.dataSource.qzDS.maxConnections">30</prop> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">10</prop> </props> </property> </bean>
*** Quartz任務檢測監聽器 * 在Spring容器啟動后檢測是否有未完成的任務 * 如果有的話,就繼續執行 * @author winter.liu * */ public class QuartzListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent event) { } @Override public void contextInitialized(ServletContextEvent event) { try{ Scheduler scheduler=(Scheduler)SpringUtil.getWebBean("scheduler"); //獲取調度器中所有的觸發器組 String[] tiggerGroups=scheduler.getTriggerGroupNames(); for(int i=0;i<tiggerGroups.length;i++){ String[] trigges=scheduler.getTriggerNames(tiggerGroups[i]); for(int j=0;j<trigges.length;j++){ Trigger tg=scheduler.getTrigger(trigges[j],tiggerGroups[i]); if(tg instanceof SimpleTrigger){ scheduler.rescheduleJob(trigges[j],tiggerGroups[i], tg); } } } //開啟容器 scheduler.start(); }catch (Exception e) { e.printStackTrace(); } } } </pre></b><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959548949325005050" target="_blank"></a></div>
</div> </div> 編寫一個簡單的測試job
/*** 測試job * @author winter.liu * */ public class SimpleJob implements Job{ @Override public void execute(JobExecutionContext jobCtx) throws JobExecutionException { System.out.println(jobCtx.getTrigger().getName()+" triggered.time is: "+(new Date())); } } </pre></b> <div class="dp-highlighter bg_java">
/*** 自定義發布job工具類 * @author winter.liu * */ public class ScheduleJob { /** * @param job 任務源對象 * @param cronExpression Cron表達式 例如:0 07 14 2 12 ? 2013 */ public static void scheduleJobBean(Class<?> job,String cronExpression){ try { JobDetail jobDetail=new JobDetail(UUID.randomUUID().toString(),UUID.randomUUID().toString(),job); CronTrigger cronTrigger=new CronTrigger(UUID.randomUUID().toString(),UUID.randomUUID().toString()); CronExpression cexp=new CronExpression(cronExpression); cronTrigger.setCronExpression(cexp); Scheduler scheduler=(Scheduler)SpringUtil.getWebBean("scheduler"); scheduler.scheduleJob(jobDetail,cronTrigger); } catch (Exception e) { e.printStackTrace(); } } } </pre></b><a style="text-indent:0px;" title="派生到我的代碼片" href="/misc/goto?guid=4959548949325005050" target="_blank"></a></div>
</div> </div> 使用的lib版本是spring3.05和quartz 1.8.6的
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!相關經驗
相關文檔
目錄