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

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

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

    JAVA—咖啡館

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

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

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

    2 配置spring的applicationContext.xml文件
        2.1 配置任務JobDetailBean
        2.2配置觸發器 CronTriggerBean
        2.3配置調度器  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

    業務類:

    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()//執行報表統計入口函數   
                
    //業務邏輯   
              System.out.println("開始執行報表的業務邏輯了----現在的時間是--"+new Date());   
                 
            }
       
      
        
    public void execute(JobExecutionContext arg0) throws JobExecutionException {   
            perform();   
               
        }
       
      
    }
       

    applicationContext.xml文件

     三 quartz.properties文件的內容(默認放在類路徑下)
    #============================================================================
    # 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觸發
    0 15 10 ? * *---------------每天上午10:15 觸發
    0 15 10 * * ?---------------每天上午10:15 觸發
    0 15 10 * * ? *---------------每天上午10:15 觸發
    0 15 10 * * ? 2005---------------在2005年中的每天上午10:15 觸發
    0 * 14 * * ?---------------每天在下午2:00至2:59之間每分鐘觸發一次
    0 0/5 14 * * ?---------------每天在下午2:00至2:59之間每5分鐘觸發一次
    0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之間的每5分鐘觸發一次
    0 0-5 14 * * ?---------------每天在下午2:00至2:05之間每分鐘觸發一次
    0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和2:44時觸發
    0 15 10 ? * MON-FRI---------------從星期一至星期五的每天上午10:15觸發
    0 15 10 15 * ?---------------在每個月的每15天的上午10:15觸發
    0 15 10 L * ?---------------在每個月的最后一天的上午10:15觸發
    0 15 10 ? * 6L---------------在每個月的最后一個星期五的上午10:15觸發
    0 15 10 ? * 6L 2002-2005---------------在2002, 2003, 2004 and 2005年的每個月的最后一個星期五的上午10:15觸發
    0 15 10 ? * 6#3---------------在每個月的第三個星期五的上午10:15觸發
    0 0 12 1/5 * ?---------------從每月的第一天起每過5天的中午12:00時觸發
    0 11 11 11 11 ?---------------在每個11月11日的上午11:11時觸發.­



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

      ·秒

      ·分

      ·小時

      ·月內日期

      ·月

      ·周內日期

      ·年(可選字段)

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

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

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

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

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

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

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

    Feedback

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

    主站蜘蛛池模板: 亚洲AV无码码潮喷在线观看| 亚洲AV人无码综合在线观看| 深夜久久AAAAA级毛片免费看| 亚洲不卡AV影片在线播放| 一级毛片在线播放免费| 亚洲AV成人片色在线观看| 最近最好最新2019中文字幕免费| 亚洲人6666成人观看| 国产嫩草影院精品免费网址| 91视频精品全国免费观看| 亚洲欧洲国产成人精品| 免费亚洲视频在线观看| 久久久久久夜精品精品免费啦| 中文字幕在线观看亚洲视频| 亚洲男人第一无码aⅴ网站| 中文字幕视频免费| 国产精品亚洲综合网站| 亚洲欧洲日韩不卡| 免费在线观看污网站| 88xx成人永久免费观看| 曰批免费视频播放免费 | 91亚洲自偷在线观看国产馆| 亚洲AV中文无码乱人伦| 1000部禁片黄的免费看| 和老外3p爽粗大免费视频| 亚洲制服丝袜第一页| 亚洲av无码一区二区三区乱子伦 | 亚洲国产乱码最新视频| 亚洲国产另类久久久精品小说| 免费无码一区二区三区蜜桃大 | 国产做床爱无遮挡免费视频| 亚洲一级毛片免费观看| 成人爽a毛片免费| 猫咪免费人成网站在线观看入口| 中文字幕亚洲情99在线| 亚洲精品无码久久久久久久| 国产精品久久久亚洲| 久久精品亚洲综合| 亚洲AV区无码字幕中文色 | 成人最新午夜免费视频| 国产精彩免费视频|