Quartz2之入門樣本【轉】

來源:互聯網
上載者:User

標籤:

原文地址:http://liuzidong.iteye.com/blog/1118992環境:XP+Myeclipse6.5+JDK1.6 
quartz官網:http://www.quartz-scheduler.org/ 
參考資料 
1 Quartz任務調度快速入門 
http://www.blogjava.net/baoyaer/articles/155645.html 
2 Quartz 
http://ttaale.iteye.com/blog/630202 
http://java-lyvee.iteye.com/blog/817110 
3 Quartz Job Scheduling Framework 
http://hi.baidu.com/recoder/blog/item/ec7642f1db2b68a7a40f52f3.html 
4 Quartz學習 
http://blog.csdn.net/bubei/article/details/2108778 
5 Quartz學習資料連結 
http://topmanopensource.iteye.com/blog/search?query=quartz 

特別說明:如無特別說明,所有有關quartz樣本基於官方樣本 

一 Quarta介紹 
1 Quartz是什麼 
Quartz就是一個純 Java 實現的作業調度工具,相當於資料庫中的 Job、Windows 的計劃任務、Unix/Linux 下的 Cron,但 Quartz 可以把排程式控制制的更精細. 
2 Quartz 架構的發展曆程 
Quartz項目是由James House創立的,在1998年就有該架構最初的構思,包括作業隊列的概念,使用線程池來處理作業,在2001年春天在SourceForge 上創立了該項目
Quartz 的目錄結構和內容 
DocsQuartz 架構的JavaDoc Api 說明文檔 
Examples多方面使用 Quartz 的例子 
LibQuartz 使用到的第三方包 
quartz-jboss提供了特定於 JBoss 特性的原始碼 
quartz-oracle提供了特定於 Oracle 特性的原始碼 
quartz-weblogic提供了特定於 WebLogic 特性的原始碼 
二 Quartz的應用情境 
情境 #1: 寄件提醒和警示 
情境 #2: 執行檔案傳輸操作 
情境 #3: 建立銷售報告 
三 Quarta的安裝及使用 
官網:http://www.quartz-scheduler.org/下載最新的檔案,需要你註冊才能下載!也可在附件中下載 
四 瞭解Quartz體繫結構 
Quartz對任務調度的領域問題進行了高度的抽象,提出了調度器、任務和觸發器這3個核心的概念,並在org.quartz通過介面和類對重要的這些核心概念進行描述 
Quartz 調度包的兩個基本單元是作業和觸發器。作業是能夠調度的可執行任務,觸發器提供了對作業的調度. 
調度器:調度器用於將與作業觸發器關聯,一個作業可關聯多個觸發器,這樣每個觸發器被可以觸發的作業執行;一個觸發器可用於控制多個作業,觸發觸發時, 
全部作業將獲得調度。Quartz的調度器由Scheduler介面體現. 
作業:只需實現org.quartz.job介面即可.Job介面包含一個方法 execute(),execute方法體是被調度的作業體。一旦實現Job介面和execute()方法, 
Quartz確定作業運作的時候,它將調用 execute()方法體。 
觸發器:有SimpleTrigger和CronTrigger兩種類型 

 
五 工程圖片 
 
六 具體代碼如下 
Job:是一個介面只有一個方法void execute(JobExecutionContext context),開發人員實現該介面定義運行任務,JobExecutionContext類提供了調度內容相關的各種資訊。Job運行時的資訊儲存在JobDataMap執行個體中 
1 定義一個作業類: HelloJob.java 
Java代碼  
  1. import java.util.Date;  
  2. import org.slf4j.Logger;  
  3. import org.slf4j.LoggerFactory;  
  4. import org.quartz.Job;  
  5. import org.quartz.JobExecutionContext;  
  6. import org.quartz.JobExecutionException;  
  7.   
  8. public class HelloJob implements Job {  
  9.   
  10.     private static Logger _log = LoggerFactory.getLogger(HelloJob.class);  
  11.      
  12.     public HelloJob() {  
  13.           
  14.     }  
  15.      
  16.     public void execute(JobExecutionContext context)  
  17.         throws JobExecutionException {  
  18.           
  19.         _log.error(" 咫尺天涯: " + new Date());  
  20.           
  21.     }  
  22. }  

2 測試類別 
Java代碼  
  1. import static org.quartz.JobBuilder.newJob;  
  2. import static org.quartz.TriggerBuilder.newTrigger;  
  3. import static org.quartz.DateBuilder.*;  
  4. import java.util.Date;  
  5. import org.quartz.JobDetail;  
  6. import org.quartz.Scheduler;  
  7. import org.quartz.SchedulerFactory;  
  8. import org.quartz.Trigger;  
  9. import org.quartz.impl.StdSchedulerFactory;  
  10. import org.slf4j.Logger;  
  11. import org.slf4j.LoggerFactory;  
  12. public class SimpleExample {  
  13.   
  14.     private static Logger log = LoggerFactory.getLogger(SimpleExample.class);  
  15.   
  16.     public void run() throws Exception {  
  17.         // 通過SchedulerFactory擷取一個調度器執行個體  
  18.         SchedulerFactory sf = new StdSchedulerFactory();      
  19.           
  20.         Scheduler sched = sf.getScheduler();  
  21.           
  22.         Date runTime = evenMinuteDate(new Date());  
  23.           
  24.         // 通過過JobDetail封裝HelloJob,同時指定Job在Scheduler中所屬組及名稱,這裡,組名為group1,而名稱為job1。  
  25.         JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();  
  26.   
  27.         // 建立一個SimpleTrigger執行個體,指定該Trigger在Scheduler中所屬組及名稱。  
  28.         // 接著設定調度的時間規則.目前時間運行  
  29.         Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();  
  30.   
  31.         // 註冊並進行調度  
  32.         sched.scheduleJob(job, trigger);  
  33.   
  34.         // 啟動調度器  
  35.         sched.start();  
  36.   
  37.         try {  
  38.             //當前線程等待65秒  
  39.             Thread.sleep(65L * 1000L);  
  40.         } catch (Exception e) {  
  41.               
  42.         }  
  43.           
  44.         //調度器停止運行  
  45.         sched.shutdown(true);  
  46.           
  47.         log.error("結束運行。。。。");  
  48.           
  49.     }  
  50.   
  51.     public static void main(String[] args) throws Exception {  
  52.         SimpleExample example = new SimpleExample();  
  53.         example.run();  
  54.     }  
  55. }  

因為上官網下載麻煩,這裡就直接上傳了,方便大家下載!目錄結構如下: 
Quartz所用到的jar 
 
上傳Quartz檔案如下 
 

Quartz2之入門樣本【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.