`
joe_zhjiang
  • 浏览: 158396 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring quartz

阅读更多
spring调度的bean:

package com.xzl.quartz;

import org.apache.log4j.Logger;



public class TJob {
    private Logger logger = Logger.getLogger(this.getClass().getName());
    public void doAuth(){
        logger.info("开始进行任务调度,验证信息:");
    }
}


spring 配置文件:JobQuartz.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!--要调度的对象-->

    <bean id="job" class="com.xzl.quartz.TJob"></bean>
<!-- 定义目标bean和bean中的方法 -->
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref local="job"/>
        </property>
        <property name="targetMethod">
            <value>doAuth</value>
        </property>
    </bean>
<!-- 定义触发的时间 -->
    <bean id = "cron" class = "org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="jobtask"/>
        </property>
        <property name="cronExpression">
            <value>* * 18 * * ?</value>
        </property>
    </bean>
<!-- 总管理 -->
    <bean autowire = "no" class = "org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref local ="cron"/>
            </list>
        </property>
    </bean>

</beans>


测试spring quartz任务调度:

package com.xzl.quartz;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Test {
    
    /** *//**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        System.out.println("测试开始");
        ApplicationContext ctx = new ClassPathXmlApplicationContext("JobQuartz.xml");
        System.out.println("测试结束");
        
    }

}


3.进行测试,只要加载JobQuartz.xml

4.linux shell脚本程序:目的让定时调度自动执行运行在后台(即起一个进程运行)
CLASSPATH=quartz:./classes
for jar in ./lib/*.jar
do
CLASSPATH=$CLASSPATH:$jar
done
CLASSPATH=$CLASSPATH:./lib/jdbc/ojdbc14.jar
echo "$CLASSPATH"
nohup /opt/jdk1.6.0_20/bin/java -classpath $CLASSPATH com.xzl.quartz&



5.需要加入spring.jar   quartz-all-1.6.0.jar   log4j-1.2.14.jar   commons-collections.jar   jta.jar   commons-logging.jar这几个包


6.以下是log4j.properties内容:

# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=logs\\test.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n


7.关于Quartz任务表达式cronExpression

Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下:

字段名         允许的值                     允许的特殊字符 
秒               0-59                      , - * / 
分               0-59                      , - * / 
小时             0-23                      , - * / 
日               1-31                      , - * ? / L C W 
月               1-12 or JAN-DEC           , - * / 
周几             1-7 or SUN-SAT            , - * ? / L C # 
年 (可选字段)   empty, 1970-2099          , - * /
 
特殊字符的含义:

'*' 字符 可以用于所有字段 例如:在“分”字段中设为"*"表示"每一分钟"的含义,在秒字段设置为"*"表示"每一秒"的含义。依次类推,每一秒,每一分,每一小时,每一日,每一月,每一周,每一年。


"?"字符  可以用在“日”和“周几”字段. 它用来指定 '不明确的值'. 这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。月份中的日期和星期中的日期这两个元素时互斥的时候应该通过设置一个问号(?)来表明不想设置那个字段。

'-' 字符   被用来指定一个值的范围,比如在“小时”字段中设为"10-12"表示"10点到12点".

',' 字符   指定数个值 比如在“周几”字段中设为"MON,WED,FRI"表示 周一,周三,周五.

'/' 字符   用来指定一个值的的增加幅度. 比如在“秒”字段中设置为"0/15"表示"第0, 15, 30, 和 45秒"。而 "5/15"则表示"第5, 20, 35, 和 50"。 在'/'前加"*"字符相当于指定从0秒开始. 每个字段都有一系列可以开始或结束的数值。对于“秒”和“分”字段来说,其数值范围为0到59,对于“小时”字段来说其为0到23, 对于“日”字段来说为0到31, 而对于“月”字段来说为1到12。"/"字段仅仅只是帮助你在允许的数值范围内从开始"第n"的值。 因此 对于“月”字段来说"7/6"只是表示7月被开启而不是“每六个月”, 请注意其中微妙的差别。

'L'字符  用在“日”和“周几”这两个字段。它是"last"的缩写, 但是在这两个字段中有不同的含义。例如,“日”字段中的"L"表示"一个月中的最后一天" —— 对于一月就是31号对于二月来说就是28号(非闰年)。而在“周几”字段中, 它简单的表示"7" or "SAT",但是如果在“周几”字段中使用时跟在某个数字之后, 它表示"该月最后一个星期×" —— 比如"6L"表示"该月最后一个周五"。当使用'L'选项时,指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。

'W'字符   可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五) 。比如你将“日”字段设为"15W",意为: "离该月15号最近的工作日"。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日, 触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将“日”字段设为"1W", 而一号又是周六, 触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。'W'字符只能用于“日”字段的值为单独的一天而不是一系列值的时候。

'L'和'W'   可以组合用于“日”字段表示为'LW',意为"该月最后一个工作日"。

'#' 字符   可用于“周几”字段。该字符表示“该月第几个周×”,比如"6#3"表示该月第三个周五( 6表示周五而"#3"该月第三个)。再比如: "2#1" = 表示该月第一个周一而 "4#5" = 该月第五个周三。注意如果你指定"#5"该月没有第五个“周×”,该月是不会触发的。 'C' 字符  可用于“日”和“周几”字段,它是"calendar"的缩写。 它表示为基于相关的日历所计算出的值(如果有的话)。

如果没有关联的日历, 那它等同于包含全部日历。“日”字段值为"5C"表示"日历中的第一天或者5号以后",“周几”字段值

为"1C"则表示"日历中的第一天或者周日以后"。

对于“月份”字段和“周几”字段来说合法的字符都不是大小写敏感的。

下面是一些完整的例子:

由于无法验证每一个例子的正确性,请试验后使用,如果这些例子有错误请告知,将不胜感激.

表达式   含义 
"0 0 12 * * ?"   每天中午十二点触发 
"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点开始到2点59分每分钟一次触发 
"0 0/5 14 * * ?"   每天从下午2点开始到2:55分结束每5分钟一次触发 
"0 0/5 14,18 * * ?"   每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 
"0 0-5 14 * * ?"   每天14:00至14:05每分钟一次触发 
"0 10,44 14 ? 3 WED"   三月的每周三的14:10和14: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"   每月最后一个周五的10:15触发 
"0 15 10 ? * 6L 2002-2005"   2002年至2005年的每月最后一个周五的10:15触发 
"0 15 10 ? * 6#3"   每月的第三个周五的10:15触发
分享到:
评论

相关推荐

    SpringQuartz的使用文档

    SpringQuartz是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...

    spring quartz 表达式在线生成器

    标题中的“Spring Quartz 表达式在线生成器”是指一个工具,它可以帮助开发者方便地创建和测试Spring集成Quartz库时所需的定时任务表达式。Quartz是一个强大的、完全开源的作业调度框架,常用于Java应用中执行定时...

    spring Quartz的jar包

    Spring Quartz是Spring框架与Quartz任务调度库的集成,它为开发者提供了在Spring应用中进行任务调度的强大功能。Quartz是一个开源的作业调度框架,能够处理执行周期性任务的需求。在Java环境中,Spring Quartz使得...

    spring quartz相关jar包(多版本)

    关于标签"springquartz jar包",这表明这些 jar 文件是专门为整合 Spring 和 Quartz 而准备的。Spring 提供了对 Quartz 的支持,使得开发者可以通过 Spring 的 XML 配置或者注解方式声明和管理 Quartz 调度器,简化...

    spring quartz定时任务demo

    在Java开发中,Spring框架与Quartz库的结合使用能够帮助开发者实现强大的定时任务功能。本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,...

    Spring Quartz定时任务 jar包

    Spring Quartz定时任务是Java开发中常见的一种任务调度框架,它结合了Spring的优秀特性与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务的管理。在本压缩包中,包含的是`log4j-1.2.14.jar`这个日志处理...

    spring quartz 表达式生成器 网页版

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中安排和执行重复或定时的任务。Quartz 表达式是用于定义任务执行时间的一种语言,它可以精确地控制任务何时运行。Spring集成Quartz,提供了更方便...

    完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题

    在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...

    动态加载属性文件与SpringQuartz的应用

    在IT行业中,动态加载属性文件和Spring Quartz的整合应用是一个重要的技术话题,特别是在构建大型、分布式和可扩展的系统时。下面将详细讲解这两个概念及其相互间的应用。 首先,我们来了解一下动态加载属性文件。...

    Spring Quartz Demo

    **Spring Quartz Demo** Spring Quartz Demo 是一个用于演示如何在Spring框架中集成Quartz调度器的实例。这个项目展示了如何配置Spring来管理和执行定时任务,利用Quartz的强大功能来实现应用程序的自动化作业调度...

    Spring quartz定时调度jar包

    Spring Quartz 定时调度是Java应用中广泛使用的任务调度框架,它允许开发者在Spring应用程序上下文中定义和管理定时任务。这个jar包包含了Spring与Quartz的整合,使得开发者能够利用Quartz的强大功能,同时享受...

    Spring Quartz 定时器示例(Web工程版)

    Spring Quartz 定时器示例(Web工程版),欢迎下载。

    Spring Quartz如何动态配置时间

    Spring Quartz 动态配置时间 Spring Quartz 是一个功能强大的任务调度框架,广泛应用于 Java 企业级应用程序中。其中一个重要的功能便是动态配置时间,触发相应的任务。在本文中,我们将讨论如何使用 Spring Quartz...

    Spring Quartz1.8.x

    Spring Quartz 1.8.x 是一个基于Java的开源任务调度框架,它允许开发者在应用程序中定义定时任务。这个版本是Spring对Quartz Scheduler的一个集成,Quartz是一个强大的、完全可配置的作业调度库,用于执行计划任务。...

    springQuartz.zip

    Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等众多功能,极大地简化了Java应用的开发。而Quartz则是一...

    Spring Quartz定时作业

    Spring Quartz是一款广泛应用于Java环境下的任务调度框架,它与Spring框架深度集成,使得在Spring应用中配置和管理定时任务变得非常便捷。本项目提供了一套完整的Spring Quartz定时作业的实现,包括任务、触发器和...

    spring quartz 相关文档

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Spring应用中轻松地定义和执行定时任务。这个框架基于开源项目Quartz,它提供了丰富的API来创建、调度和管理作业。Spring Quartz将Quartz与Spring框架无缝...

    spring quartz 时间调用框架

    **Spring Quartz时间调用框架详解** Spring Quartz是一个在Spring框架中集成的时间调度插件,它允许开发者方便地创建和管理定时任务。Quartz是Java领域的一款功能强大的作业调度库,而Spring通过其优秀的IoC...

    spring quartz 集群模式

    标题 "spring quartz 集群模式" 涉及到的是Spring框架与Quartz调度器在集群环境下的集成和配置。Quartz是一个开源任务调度框架,而Spring则提供了与Quartz的无缝集成,使得在Java应用中管理和执行定时任务变得更加...

Global site tag (gtag.js) - Google Analytics