Quartz 任务调度 0 0 17 * * ?

 

工程目录结构

 

 

 

spring + quartz JAR包

 

 

 

ApplicationContext.xml(beans.xml)

<? xml version = "1.0" encoding = "UTF-8" ?> 

< beans xmlns = "http://www.springframework.org/schema/beans" 

    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 

    xmlns:context = "http://www.springframework.org/schema/context"

    xmlns:aop = "http://www.springframework.org/schema/aop" 

    xsi:schemaLocation = "http://www.springframework.org/schema/beans

           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

           http://www.springframework.org/schema/context 

           http://www.springframework.org/schema/context/spring-context-2.5.xsd

           http://www.springframework.org/schema/aop 

           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" >

  

    < context:annotation-config /> 

    < context:component-scan base-package = "com" /> 

    < aop:aspectj-autoproxy /> 

  

    <!-- 要调用的工作类 --> 

    < bean id = "quartzJob" class = "com.kay.quartz.QuartzJob" ></ bean >

<!-- 定义调用对象和调用对象的方法 --> 

    < bean id = "jobtask" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >

        <!-- 调用的类 --> 

        < property name = "targetObject" > 

            < ref bean = "quartzJob" /> 

        </ property > 

        <!-- 调用类中的方法 --> 

        < property name = "targetMethod" > 

            < value > work </ value > 

        </ property > 

    </ bean > 

    

    <!-- 定义触发时间 --> 

    < bean id = "doTime" class = "org.springframework.scheduling.quartz.CronTriggerBean" >

        < property name = "jobDetail" > 

            < ref bean = "jobtask" /> 

        </ property > 

        <!-- cron 表达式 --> 

        < property name = "cronExpression" > 

            < value > 0 0 17 * * ? </ value > 

        </ property > 

    </ bean > 

<!-- 总管理类 如果将 lazy-init='false' 那么容器启动就会执行调度程序 --> 

    < bean id = "startQuertz" lazy-init = "false" autowire = "no" class = "org.springframework.scheduling.quartz.SchedulerFactoryBean" >

        < property name = "triggers" > 

            < list > 

                < ref bean = "doTime" /> 

            </ list > 

        </ property > 

    </ bean > 

  

</ beans > 



 

任务调度类

package com.kay.quartz; 

  

import java.io.File; 

import java.io.FileFilter; 

import java.io.FileInputStream; 

import java.io.FileOutputStream; 

import java.util.Date; 

  

/** 

  * quartz 任务调度 , 每天下午 17:00, 自动将 e:/ 下的 jpg 图片 , 拷贝到 e:/aa/ 下 

  * 

  * 秒    分    时    月中天    月     周中天    [ 年 ] 

  * 

  * 0     0     17    *        *      ? 

  * 

  * @author leiwei 2011 - 11 - 29 

  * 

  * 

  */ 

public class QuartzJob { 

  

    public void work() throws Exception {

        int b = 0; 

  

        // Make sure the directory exists  

        File dir = new File( "e:/" ); 

  

        if (!dir.exists()){ 

            throw new Exception( "Directory not configured" ); 

        } 

  

        // Use FileFilter to get only jpg files       

        FileFilter filter = new FileExtensionFileFilter( ".jpg" );  

        File[] files = dir.listFiles(filter);  

  

        // Return since there were no files 

        if (files == null || files. length <= 0) {      

            System. out .println( "No XML files found in " + dir);      

            return ;              

        }  

  

        // The number of jpg files       

        int size = files. length ;    

  

        // Iterate through the files found        

        for ( int i = 0; i < size; i++) {      

            File file = files[i];       

  

            // Log something interesting about each file.       

            File aFile = file.getAbsoluteFile();    

  

            FileInputStream ino = new FileInputStream(aFile);

            FileOutputStream fos = new FileOutputStream( "e:/aa/" +file.getName());

  

            while ((b=ino.read())>-1){ 

                fos.write(b); 

            }   

        }       

  

    } 

} 

// 内部类,过滤文件 

class FileExtensionFileFilter implementsFileFilter{

  

    private   String extension ; 

  

    public FileExtensionFileFilter(String extension) {

        this . extension = extension; 

    } 

  

    public boolean accept(File file) { 

        String lCaseFilename = file.getName().toLowerCase();       

        return   (file.isFile() && (lCaseFilename.indexOf( extension ) >  0 )) ? true:false ;      

    } 

  

} 


 

 

测试

 

package com.test; 

  

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

  

public class Test { 

  

    public static void main(String[] args) { 

        System. out .println( " 调度开始 ..." ); 

        ApplicationContext apc = new ClassPathXmlApplicationContext( "beans.xml" );

        System. out .println( " 调度结束 ..." ); 

    } 

} 


 

参考:  http://it.oyksoft.com/post/698/

 

续:上面只是quartz的独立应用,如何将它整合到实际的项目应用中了。
    在原有的ssh基础上,加入quartz.xml(在这里面配置所需的任务调度),
    再在web.xml文件contextConfigLocation下param-value中追加classpath*:quartz.xml
    结构图、文件如下

 

 quartz.xml

<? xml version = "1.0" encoding = "UTF-8" ?> 
< beans 
    xmlns = "http://www.springframework.org/schema/beans" 
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" > 
    
    <!-- 对 testService 中的 testQuartz 方法进行定时任务调度 --> 
    < bean id = "methodInvokingJobDetailForSms" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >        
        < property name = "targetObject" > 
            < ref bean = "testService" /> 
        </ property >         
        < property name = "targetMethod" > 
            < value > testQuartz </ value > 
        </ property >   
    </ bean > 
    < bean id = "cronTriggerForSms" class = "org.springframework.scheduling.quartz.CronTriggerBean" >         
       < property name = "jobDetail" >             
            < ref bean = "methodInvokingJobDetailForSms" />         
       </ property >         
       < property name = "cronExpression" >             
            < value > 0 * 12 * * ? </ value >      
       </ property >     
    </ bean > 
    < bean class = "org.springframework.scheduling.quartz.SchedulerFactoryBean" >         
       < property name = "triggers" >             
            < list >< ref local = "cronTriggerForSms" /></ list >         
       </ property >     
    </ bean > 
</ beans > 


 

web.xml

    < context-param > 
        < param-name > contextConfigLocation </ param-name > 
        <!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>  --> 
        < param-value > 
            classpath*:beans.xml 
            classpath*:quartz.xml 
        </ param-value > 
    </ context-param > 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值