这个是整个项目的结构,以及所对应的jar包,

然后是这个.编写工作的类。代码很简单:

package cn.itcast.service;

import java.util.Date;

/*
 * 使用spring+Quartz执行任务调度的具体类
 * */
public class Job1 {

/*
     * Description:具体工作的方法,此方法只是向控制台输出当前时间,
     * 输入的日志在:%tomcatRoot%\logs\tomcat7-stdout.yyyy-MM-dd.log中,
     * 其中,yyyy-MM-dd为部署的日期,经试验发现默认情况下并不是每天都生成一个stdout的日志文件
     * @return 返回void
     * */
    public void work()
    {
         System.out.println("当前时间:"+new Date().toString()+"你好啊");  
    }
}//End of MyJob

配置web.xml,具体配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SpringScheduleTask</display-name>
  
  
  <!-- needed for ContextLoaderListener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application-context.xml</param-value>
</context-param>

<!-- Bootstraps the root web application context before servlet initialization -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

5.配置applicationContext.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:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<!-- 工作的bean -->
    <bean id="myJob" class="cn.itcast.service.Job1" />

<!-- job的配置开始 -->
    <bean id="myJobDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref bean="myJob" />
        </property>
        <property name="targetMethod">
            <value>work</value>
        </property>
    </bean>
    <!-- job的配置结束 -->

<!-- 调度的配置开始 -->
    <bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail">
            <ref bean="myJobDetail" />
        </property>
        <property name="cronExpression">
            <value>0/1 * * * * ?</value>
        </property>
    </bean>
    <!-- 调度的配置结束 -->

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

<bean name="startQuertz" lazy-init="false" autowire="no"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="crontestJobTrigger" />
            </list>
        </property>
    </bean>
    <!-- 启动触发器的配置结束 -->
</beans>

6.在Tomcat中调试,即可在Console窗口看到输出

在测试的过程中遇到了这样的问题

下面是遇到的问题和这个解决方案

使用Spring配置管理Quartz的时候会遇到下面的异常:

  1. Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class

原因是Spring 3.0版本中内置的Quartz版本是<2.0的,在使用最新的Quartz包(>2.0)之后,接口不兼容。

解决办法有两种:

1.降低Quartz版本,降到1.X去。

2.升级Spring版本到3.1+,根据Spring的建议,将原来的**TriggerBean替换成**TriggerFactoryBean,例如CronTriggerBean 就可以替换成 CronTriggerFactoryBean。替换之后问题解决。

2014-04-22补充解决办法:

解决办法有三种:

1.降低Quartz版本,降到1.X去。

2.升级Spring版本到3.1+,根据Spring的建议,将原来的**TriggerBean替换成**TriggerFactoryBean,例如CronTriggerBean 就可以替换成 CronTriggerFactoryBean。替换之后问题解决。

3.如果不在xml配置文件中引用 Spring 3.0 是支持 Quartz2.2.1(目前最新版本),直接在程序中调用即可。(我们的文件中转站系统用的是 Spring 3.0+quartz 2.2.1集群模式)

2012-04-27下面我们来看一下服务器端运行测试程序:

测试环境 2个Tomcat+Terracotta 集群 + Weblogic 共用 Quartz 2.2.1 集群

Spring定时任务的Demo相关推荐

  1. Spring定时任务高级使用篇

    Spring定时任务高级使用篇 前面一篇博文 <Spring之定时任务基本使用篇> 介绍了Spring环境下,定时任务的简单使用姿势,也留了一些问题,这一篇则希望能针对这些问题给个答案 I ...

  2. 浅谈Spring定时任务

    浅谈Spring定时任务 三种定时任务基于原理 多定时任务并发配置 动态定时任务 定时任务Demo 三种定时任务基于原理 SpringBoot配置定时任务主要有Spring Schedule.JDK自 ...

  3. Spring定时任务scheduled

    Spring定时任务 一. cron 表达式 ​ 1. 概念:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: ​ 2. Cro ...

  4. spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java

    spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java spring默认定时任务的使用 package zhangphil.demo;impor ...

  5. Spring定时任务:@Schedule

    Spring定时任务:@Schedule 在开发中经常遇到一些定时任务,比如到点自动爬取数据.到点自动执行清除数据库信息之类,使用spring的Schedule功能就可以实现需求. 快速入门: 从ht ...

  6. Spring定时任务的几种实现

    Spring定时任务的几种实现 spring框架 quartz spring spring-task 定时任务 注解 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信 ...

  7. (转)Spring定时任务的几种实现

    Spring定时任务的几种实现 博客分类: spring框架 quartzspringspring-task定时任务注解  Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要 ...

  8. spring定时任务

    使用spring定时任务包Quartz时,必须使用Quartz1.85以下版本的. 查看发现spring3.0.5中org.springframework.scheduling.quartz.Cron ...

  9. spring boot apollo demo

    spring boot apollo demo controller 监听器,监听配置实时变化 src/main/resources---->META-INF---->app.proper ...

最新文章

  1. script runat=server,%%区别
  2. 试试这款针对JAVA应用的开源防火墙!
  3. Rectangle Area
  4. 多线程:Callable
  5. 科大星云诗社动态20210125
  6. 迁移pg_PG奥斯卡!云数据库专属集群MyBase荣获2020 PG亚洲大会“年度最佳产品奖”...
  7. DNS DHCP 路由 FTP
  8. JVM菜鸟进阶高手之路
  9. 基于E18-2G4U04B的ZigBee3.0无线数据抓包安装方法
  10. 树莓派基金会来号召用键盘生物学家研究企鹅
  11. linux和windows输入法,关于输入法框架,这里有可以跨平台的linux和windows。。。。...
  12. eclipse快速导包快捷键_【IntelliJ IDEA mac新手入门】IDEA如何快速搭建Java开发环境...
  13. Quartz任务监控管理
  14. 目前找到的对龙枪最清晰的介绍。
  15. 51采集温度电压电流+LCD1602显示
  16. vue3 effect
  17. bs前端--弹出子窗体
  18. 下载网易云音乐的MV
  19. 雇佣兵(程序设计与算法(一))
  20. C++实现“23”抽签小游戏

热门文章

  1. plc-st编程语言学习_这就是您可以学习所有编程语言的方式,是的-“全部”
  2. 【C数据类型】基本数据类型
  3. 详细的介绍sigmoid函数
  4. 分析可执行文件mach-o
  5. Python——列表与元组
  6. 旅行商问题(TSP)的两种模型
  7. 如何获得扬声器完美的单位冲激响应?
  8. 区块链技术 ——区块链概述
  9. Python写自动化之图标锁定到任务栏或删除图标
  10. AutoMapper 9.0的使用