<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統(tǒng)計

    最新評論

    Quartz 框架快速入門(三)

      在前面兩篇文章中簡單介紹了在java應用程序中如何使用Quartz框架,這一篇中我們將看到如何在web環(huán)境下通過配置文件來完成Quartz的后臺作業(yè)調(diào)度,而不必手工去創(chuàng)建Trigger和Scheduler,其步驟如下:
    首先創(chuàng)建一個Web項目,將quartz-1.6.0.jar,以及l(fā)ib目錄下面core下所有jar,optional目錄下的所有commons-beanutils.jar和commons-digester-1.7.jar,build目錄下的jta.jar都放入Web項目的WEB-INF"lib目錄下。
    創(chuàng)建一個簡單的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 框架快速入門(二)》中所講述的內(nèi)容編寫quartz.properties文件。如果啟動項目的時候,Quartz沒有在工程中找到該文件,就會從自己的jar包下面讀取其默認的properties文件,其內(nèi)容如下

    #============================================================================
    # 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,內(nèi)容如下:

    <?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,內(nèi)容如下

    <?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這個配置文件,并初始化調(diào)度信息,啟動Scheduler。
    啟動tomcat后,就可以看到輸出的結(jié)果:
     

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


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲成av人片不卡无码久久 | 亚洲国产一二三精品无码| 亚洲av永久无码| 麻豆国产人免费人成免费视频| 亚洲人成网亚洲欧洲无码| 午夜免费福利在线| 亚洲aⅴ无码专区在线观看| 国产成人综合久久精品免费| 国产亚洲精品精品精品| 亚洲精品专区在线观看| 少妇性饥渴无码A区免费| 亚洲黄色片在线观看| 好先生在线观看免费播放| 亚洲成a人无码亚洲成www牛牛| 国产高清视频在线免费观看| 黄人成a动漫片免费网站| 国外亚洲成AV人片在线观看| 日本在线看片免费| 亚洲国产美女视频| 免费h成人黄漫画嘿咻破解版| 黄桃AV无码免费一区二区三区| 亚洲av无码成h人动漫无遮挡| 亚洲美女视频免费| 亚洲av无码专区在线电影| 亚洲AV无码乱码在线观看牲色| 国产免费AV片在线观看| 国产精品久久亚洲不卡动漫| 国产又大又长又粗又硬的免费视频| 国产精品美女久久久免费| 亚洲码一区二区三区| 免费在线观看一级毛片| 国产精品免费观看调教网| 亚洲爆乳无码精品AAA片蜜桃| 亚洲人色婷婷成人网站在线观看| 18观看免费永久视频| 亚洲AV无码国产一区二区三区| 国产成人精品日本亚洲网站| 免费无码AV电影在线观看| 国产免费人成视频尤勿视频| 亚洲一区二区三区在线网站| 亚洲麻豆精品国偷自产在线91|