yxhxj2006

          常用鏈接

          統計

          最新評論

          Quartz 框架快速入門(三)

            在前面兩篇文章中簡單介紹了在java應用程序中如何使用Quartz框架,這一篇中我們將看到如何在web環境下通過配置文件來完成Quartz的后臺作業調度,而不必手工去創建Trigger和Scheduler,其步驟如下:
          首先創建一個Web項目,將quartz-1.6.0.jar,以及lib目錄下面core下所有jar,optional目錄下的所有commons-beanutils.jar和commons-digester-1.7.jar,build目錄下的jta.jar都放入Web項目的WEB-INF"lib目錄下。
          創建一個簡單的job類HelloWorld,它的功能很簡單,就是輸出當前的時間,代碼如下:

          package com.vista.quartz;

          import java.util.Date;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.quartz.Job;
          import org.quartz.JobExecutionContext;
          import org.quartz.JobExecutionException;

          public class Helloworld implements Job
          {
              private static Log logger = LogFactory.getLog(Helloworld.class);//日志記錄器
              public Helloworld()
              {
              }
              public void execute(JobExecutionContext context) throws JobExecutionException 
              {
                  logger.info("Hello World! - " + new Date()); 
              }
          }

          然后按照上一篇文章《Quartz 框架快速入門(二)》中所講述的內容編寫quartz.properties文件。如果啟動項目的時候,Quartz沒有在工程中找到該文件,就會從自己的jar包下面讀取其默認的properties文件,其內容如下

          #============================================================================
          # Configure Main Scheduler Properties  
          #============================================================================
          org.quartz.scheduler.instanceName = QuartzScheduler
          org.quartz.scheduler.instanceId = AUTO
          #============================================================================
          # Configure ThreadPool  
          #============================================================================
          org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
          org.quartz.threadPool.threadCount = 5
          org.quartz.threadPool.threadPriority = 5
          #============================================================================
          # Configure JobStore  
          #============================================================================
          org.quartz.jobStore.misfireThreshold = 60000
          org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
          #============================================================================
          # Configure Plugins 
          #============================================================================
          org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
          org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
          org.quartz.plugin.jobInitializer.fileNames = jobs.xml
          org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
          org.quartz.plugin.jobInitializer.failOnFileNotFound = true
          org.quartz.plugin.jobInitializer.scanInterval = 10
          org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

          然后編寫任務配置文件jobs.xml,內容如下:

          <?xml version='1.0' encoding='utf-8'?>
          <quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.opensymphony.com/quartz/JobSchedulingData
            http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"
            version="1.5">   
           <job>      
              <job-detail>      
               <name>HelloWorld</name>      
               <group>DEFAULT</group>      
               <description>      
                     A job that just for test       
               </description>      
               <job-class>      
                      com.vista.quartz.Helloworld      
               </job-class>      
               <volatility>false</volatility>      
               <durability>false</durability>      
               <recover>false</recover>          
            </job-detail>      
            <trigger>      
              <simple>      
               <name>HelloTrigger1</name>      
               <group>DEFAULT</group>      
               <job-name>HelloWorld</job-name>      
               <job-group>DEFAULT</job-group>      
               <start-time>2008-09-03T15:56:30</start-time>      
               <!-- repeat indefinitely every 10 seconds -->      
               <repeat-count>-1</repeat-count>      
               <repeat-interval>10000</repeat-interval>      
              </simple>      
            </trigger>      
          </job>      
          </quartz>

          可以看到,在配置文件中把jobdetail和trigger都作了完整的定義,并組合成一個job。下面,我們把上面兩個文件都放入/WEB-INF/classes目錄下,然后按照api中的說明修改一下web.xml,內容如下

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4" 
              xmlns="http://java.sun.com/xml/ns/j2ee" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
              <servlet>  
                  <servlet-name>QuartzInitializer</servlet-name>  
                  <display-name>Quartz Initializer Servlet</display-name>
                  <servlet-class>  
                       org.quartz.ee.servlet.QuartzInitializerServlet  
                  </servlet-class>  
                  <load-on-startup>1</load-on-startup>  
                  <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>  
              </servlet>  
            <welcome-file-list>
              <welcome-file>index.jsp</welcome-file>
            </welcome-file-list>
          </web-app>

          這樣,在啟動Tomcat的時候,QuartzInitializerServlet這個Servlet就會自動讀取quartz.properties這個配置文件,并初始化調度信息,啟動Scheduler。
          啟動tomcat后,就可以看到輸出的結果:
           

          posted on 2012-09-14 18:29 奮斗成就男人 閱讀(170) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 大方县| 抚州市| 大荔县| 永昌县| 策勒县| 民丰县| 江津市| 肇州县| 白银市| 济源市| 平罗县| 汉寿县| 区。| 静乐县| 邓州市| 西峡县| 崇信县| 伊金霍洛旗| 宜兰市| 东港市| 龙岩市| 星子县| 肥东县| 吴江市| 鹤山市| 大丰市| 萨迦县| 民勤县| 诏安县| 汶上县| 青浦区| 阿克陶县| 中超| 施秉县| 介休市| 泾阳县| 娱乐| 平度市| 镇远县| 仁布县| 海林市|