Quartz應用實踐入門案例一(基於Web環境)


  Quartz是一個完全由java編寫的開源作業調度框架,正是因為這個框架整合了許多額外的功能,所以在使用上就顯得相當容易。只是需要簡單的配置一下就能輕松的使用任務調度了。在Quartz中,真正執行的java代碼邏輯部分就是實現org.quartz.Job接口中的execute方法。簡而言之,如果需要Quartz框架,只需要實現接口方法就行。關於究竟什么是Quartz,貼出官方解釋:

        

  本文不介紹Quartz的工作原理和實現過程分析,如果想深入學習Quartz,為您提供鏈接http://www.quartz-scheduler.org,文本的重點是強調如何快速應用定時任務到自己的程序中,能夠在短時間掌握和配置Quartz。為剛接觸Quartz不知從何下手的朋友提供一個案例,希望能起到拋磚引玉的作用。還有一篇關於Quartz的博客是基於java工程的應用案例將在稍后貼上《Quartz應用實踐入門案例二(基於java工程)》

  本文作者itred      郵箱:it_red@sina.com      博客鏈接:http://www.cnblogs.com/itred

      本文版權歸作者和博客園共有,歡迎轉載,請在文章顯眼位置標明文章出處。未經本人書面同意,摞為他用,本人保留追究的所有權利。

    好了,廢話不多說。案例走起!

  1.  新建一個web工程,quartzDemo;

  2.  添加所需要的jar包:

            

  3.  在src目錄下新建一個job包,用於存放java代碼;

  4.  在src目錄下新建一個properties文件和xml文件:

 1 #============================================================================
 2 # Configure Main Scheduler Properties  
 3 #============================================================================
 4 org.quartz.scheduler.instanceName = QuartzScheduler
 5 org.quartz.scheduler.instanceId = AUTO
 6 #============================================================================
 7 # Configure ThreadPool  
 8 #============================================================================
 9 org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
10 org.quartz.threadPool.threadCount = 5
11 org.quartz.threadPool.threadPriority = 5
12 #============================================================================
13 # Configure JobStore  
14 #============================================================================
15 org.quartz.jobStore.misfireThreshold = 60000
16 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
17 #============================================================================
18 # Configure Plugins 
19 #============================================================================
20 #org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
21 org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
22 org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
23 org.quartz.plugin.jobInitializer.failOnFileNotFound = true
24 org.quartz.plugin.jobInitializer.scanInterval = 10
25 org.quartz.plugin.jobInitializer.wrapInUserTransaction =false
26 
27 #默認會聯網檢查是否有更新,還是skip為好
28 org.quartz.scheduler.skipUpdateCheck =true  

 

  5.  在此基礎上,開始配置web.xml文件:

    我們需要設置並實現當web工程一旦開始啟動運行,這個定時任務就開始自動執行。所以需要在xml中添加上<load-on-startup>2</load-on-startup>;而且還需要初始化參數:因此,web.xml中應該添加的內容如下:

  <servlet>
        <servlet-name>QuartzInitializer</servlet-name>
        <servlet-class>
            org.quartz.ee.servlet.QuartzInitializerServlet
        </servlet-class>
        <init-param>
            <param-name>config-file</param-name>
            <param-value>/quartz.properties</param-value>
        </init-param>
        <init-param>
            <param-name>shutdown-on-unload</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>

 

  6.  配置quartz_data.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
    xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
    version="1.8">
    <schedule>
        <job>
            <name>DemoJob</name>
            <group>JobGroup</group>
            <job-class>job.QuartzDemoJob</job-class>
        </job>
        <trigger>
            <cron>
                <name>DemoTrigger</name>
                <group>triggerGroup</group>
                <job-name>DemoJob</job-name>
                <job-group>JobGroup</job-group>
                <cron-expression>0/3 * * * * ?</cron-expression>
            </cron>
        </trigger>
    </schedule>
    <schedule>
        <job>
            <name>TestJob</name>
            <group>TestGroup</group>
            <job-class>job.QuartzTestJob</job-class>
        </job>
        <trigger>
            <cron>
                <name>DemoTrigger</name>
<!--                <group>triggerGroup</group>-->
                <job-name>TestJob</job-name>
                <job-group>TestGroup</job-group>
                <cron-expression>0/5 * * * * ?</cron-expression>
            </cron>
        </trigger>
    </schedule>
</job-scheduling-data>

    quartz_data.xml文件是在properties文件中進行了設置的。即:org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml

    這個配置可以在以后的實際應用中慢慢學習。

  7.  實現job接口:

    如果你是細心的讀者,你就會發現本文配置的是兩個不同的定時任務。分別是每隔3秒執行一次和每隔5秒執行一次。這樣看來,Quartz的強大就可以不言而喻了。

    定時任務1:

        

    定時任務2:

        

  8.  最后,部署這個web工程,啟動Tomcat。你就會看到你希望看到的了。

      

    關於本文介紹Quartz的案例,歡迎大神拍磚指教。如果各位菜鳥朋友不理解,歡迎來郵,希望與你共同研究,討論!

      源碼下載

 

  作者:itRed    郵箱it_red@sina.com
  博客鏈接:http://www.cnblogs.com/itred
  版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但請在文章顯眼位置標明文章出處。未經本人書面同意,將其作為他用,本人保留追究責任的所有權利。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM