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

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

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

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗,分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
    在Spring中,使用JDK的Timer類庫來做任務(wù)調(diào)度功能不是很方便,關(guān)鍵它不可以象cron服務(wù)那樣可以指定具體年、月、日、時和分的時間。你只能將時間通過換算成微秒后傳給它。如任務(wù)是每天執(zhí)行一次,則需要在spring中如下配置:
    ­
    <bean id="scheduledTask" class= "org.springframework.scheduling.timer.ScheduledTimerTask">
    <!--程序啟動后開始執(zhí)行任務(wù)的延遲時間 -->
    <property name="delay" value="0" />
    <!--每隔一天【一天=24×60×60×1000微秒】執(zhí)行一次-->
    <property name="period" value="86400000" />
    <!--業(yè)務(wù)統(tǒng)計報表bean -->
    <property name="timerTask" ref="businessReport" />
    </bean>
    ­
    其中period就是一天的微秒數(shù)。如果每月1日運行一次,那就復(fù)雜了,不知如何配置。因為月份有大、小月之分,每月的微秒數(shù)都不一樣。
    ­
    而Quartz類庫不但有著上述JDK的Timer類庫類似的配置,更重要的,它還有著類似于unix的cron服務(wù)的配置。因此,在遷移中我們采用了Quartz類庫的接口。

    具體的步驟如下:
    1 編寫業(yè)務(wù)類,該類繼承了org.quartz.Job,主要的邏輯在execute方法中編寫

    2 配置spring的applicationContext.xml文件
        2.1 配置任務(wù)JobDetailBean
        2.2配置觸發(fā)器 CronTriggerBean
        2.3配置調(diào)度器  SchedulerFactoryBean

    3 所需要的jar包:
             spring.jar,quartz.jar,commons-logging-1.0.4.jar,commons-dbcp-1.2.2.jar,commons-pool-1.3.jar

    4 把quartz.properties放到類路徑下

    以下為一個demo

    業(yè)務(wù)類:

    Java代碼

     

    package task;   
      
    import java.util.Date;   
      
    import org.quartz.JobExecutionContext;   
    import org.quartz.JobExecutionException;   
      
    public class BusinessReport implements org.quartz.Job{   
          
    public void perform()//執(zhí)行報表統(tǒng)計入口函數(shù)   
                
    //業(yè)務(wù)邏輯   
              System.out.println("開始執(zhí)行報表的業(yè)務(wù)邏輯了----現(xiàn)在的時間是--"+new Date());   
                 
            }
       
      
        
    public void execute(JobExecutionContext arg0) throws JobExecutionException {   
            perform();   
               
        }
       
      
    }
       

    applicationContext.xml文件

     三 quartz.properties文件的內(nèi)容(默認放在類路徑下)
    #============================================================================
    # Configure Main Scheduler Properties 
    #============================================================================
    org.quartz.scheduler.instanceName = DefaultQuartzScheduler
    org.quartz.scheduler.instanceId = AUTO
    org.quartz.scheduler.rmi.export = false
    org.quartz.scheduler.rmi.proxy = false
    org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

    #============================================================================
    # Configure ThreadPool 
    #============================================================================
    #org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 10
    org.quartz.threadPool.threadPriority = 5
    #org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

    #============================================================================
    # Configure JobStore 
    #============================================================================
    #org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
    #org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
    org.quartz.jobStore.misfireThreshold = 60000
    #org.quartz.jobStore.useProperties = false
    #org.quartz.jobStore.tablePrefix = QRTZ_
    #org.quartz.jobStore.dataSource = myDS

    #org.quartz.jobStore.isClustered = true
    #org.quartz.jobStore.clusterCheckinInterval = 15000

    #============================================================================
    # Configure DataSource
    #============================================================================
    org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
    org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost/test
    org.quartz.dataSource.myDS.user = root
    org.quartz.dataSource.myDS.password = root
    org.quartz.dataSource.myDS.maxConnections = 10


    附:cronExpression表達式解釋:
    0 0 12 * * ?---------------在每天中午12:00觸發(fā)
    0 15 10 ? * *---------------每天上午10:15 觸發(fā)
    0 15 10 * * ?---------------每天上午10:15 觸發(fā)
    0 15 10 * * ? *---------------每天上午10:15 觸發(fā)
    0 15 10 * * ? 2005---------------在2005年中的每天上午10:15 觸發(fā)
    0 * 14 * * ?---------------每天在下午2:00至2:59之間每分鐘觸發(fā)一次
    0 0/5 14 * * ?---------------每天在下午2:00至2:59之間每5分鐘觸發(fā)一次
    0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之間的每5分鐘觸發(fā)一次
    0 0-5 14 * * ?---------------每天在下午2:00至2:05之間每分鐘觸發(fā)一次
    0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和2:44時觸發(fā)
    0 15 10 ? * MON-FRI---------------從星期一至星期五的每天上午10:15觸發(fā)
    0 15 10 15 * ?---------------在每個月的每15天的上午10:15觸發(fā)
    0 15 10 L * ?---------------在每個月的最后一天的上午10:15觸發(fā)
    0 15 10 ? * 6L---------------在每個月的最后一個星期五的上午10:15觸發(fā)
    0 15 10 ? * 6L 2002-2005---------------在2002, 2003, 2004 and 2005年的每個月的最后一個星期五的上午10:15觸發(fā)
    0 15 10 ? * 6#3---------------在每個月的第三個星期五的上午10:15觸發(fā)
    0 0 12 1/5 * ?---------------從每月的第一天起每過5天的中午12:00時觸發(fā)
    0 11 11 11 11 ?---------------在每個11月11日的上午11:11時觸發(fā).­



    Cron 表達式包括以下 7 個字段:

      ·秒

      ·分

      ·小時

      ·月內(nèi)日期

      ·月

      ·周內(nèi)日期

      ·年(可選字段)

      Cron 觸發(fā)器利用一系列特殊字符,如下所示:

      ·反斜線(/)字符表示增量值。例如,在秒字段中“5/15”代表從第 5 秒開始,每 15 秒一次。

      ·問號(?)字符和字母 L 字符只有在月內(nèi)日期和周內(nèi)日期字段中可用。問號表示這個字段不包含具體值。所以,如果指定月內(nèi)日期,可以在周內(nèi)日期字段中插入“?”,表示周內(nèi)日期值無關(guān)緊要。字母 L 字符是 last 的縮寫。放在月內(nèi)日期字段中,表示安排在當(dāng)月最后一天執(zhí)行。在周內(nèi)日期字段中,如果“L”單獨存在,就等于“7”,否則代表當(dāng)月內(nèi)周內(nèi)日期的最后一個實例。所以“0L”表示安排在當(dāng)月的最后一個星期日執(zhí)行。

      ·在月內(nèi)日期字段中的字母(W)字符把執(zhí)行安排在最靠近指定值的工作日。把“1W”放在月內(nèi)日期字段中,表示把執(zhí)行安排在當(dāng)月的第一個工作日內(nèi)。

      ·井號(#)字符為給定月份指定具體的工作日實例。把“MON#2”放在周內(nèi)日期字段中,表示把任務(wù)安排在當(dāng)月的第二個星期一。

      ·星號(*)字符是通配字符,表示該字段可以接受任何可能的值。

    posted on 2010-07-14 10:03 rogerfan 閱讀(822) 評論(1)  編輯  收藏 所屬分類: 【開源技術(shù)】

    Feedback

    # re: 【轉(zhuǎn)】spring定時任務(wù)之quartz 2014-11-25 12:15 zuidaima
    java quartz定時任務(wù)demo教程源代碼下載:http://zuidaima.com/share_topic/k%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6-p1-s1.htm  回復(fù)  更多評論
      

    主站蜘蛛池模板: 亚洲国产综合精品中文字幕| 久热综合在线亚洲精品| a级毛片免费网站| 亚洲AV无码精品色午夜果冻不卡| 久久久久久精品成人免费图片| 成人亚洲国产va天堂| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 成人浮力影院免费看| 亚洲成AV人片在WWW| 亚洲精品无码久久一线| 无码中文字幕av免费放| 美女网站在线观看视频免费的| 亚洲精品视频在线免费| 亚洲&#228;v永久无码精品天堂久久 | 99国产精品免费视频观看| 亚洲精品无码中文久久字幕| 久久亚洲精品视频| 狠狠久久永久免费观看| 99爱在线精品视频免费观看9 | 久久久久久久免费视频| 久久www免费人成精品香蕉| 中文字幕在线日亚洲9| 国产亚洲欧洲精品| 四虎永久免费影院在线| 国产成人精品免费视频动漫 | 国产成人精品日本亚洲专区6| 久久精品国产亚洲Aⅴ蜜臀色欲| 噼里啪啦免费观看高清动漫4| 精品97国产免费人成视频| 亚洲免费福利在线视频| 精品亚洲成a人片在线观看少妇| 亚洲国产精品自在拍在线播放| 三年片在线观看免费大全| 国产精品99久久免费观看 | 成人午夜免费福利| 91福利视频免费| a国产成人免费视频| 一个人看的hd免费视频| 亚洲国产欧洲综合997久久| 亚洲av成人一区二区三区| 亚洲大尺度无码专区尤物|