Spring定时任务的Demo
这个是整个项目的结构,以及所对应的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的时候会遇到下面的异常:
- 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相关推荐
- Spring定时任务高级使用篇
Spring定时任务高级使用篇 前面一篇博文 <Spring之定时任务基本使用篇> 介绍了Spring环境下,定时任务的简单使用姿势,也留了一些问题,这一篇则希望能针对这些问题给个答案 I ...
- 浅谈Spring定时任务
浅谈Spring定时任务 三种定时任务基于原理 多定时任务并发配置 动态定时任务 定时任务Demo 三种定时任务基于原理 SpringBoot配置定时任务主要有Spring Schedule.JDK自 ...
- Spring定时任务scheduled
Spring定时任务 一. cron 表达式 1. 概念:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: 2. Cro ...
- spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java
spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java spring默认定时任务的使用 package zhangphil.demo;impor ...
- Spring定时任务:@Schedule
Spring定时任务:@Schedule 在开发中经常遇到一些定时任务,比如到点自动爬取数据.到点自动执行清除数据库信息之类,使用spring的Schedule功能就可以实现需求. 快速入门: 从ht ...
- Spring定时任务的几种实现
Spring定时任务的几种实现 spring框架 quartz spring spring-task 定时任务 注解 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信 ...
- (转)Spring定时任务的几种实现
Spring定时任务的几种实现 博客分类: spring框架 quartzspringspring-task定时任务注解 Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要 ...
- spring定时任务
使用spring定时任务包Quartz时,必须使用Quartz1.85以下版本的. 查看发现spring3.0.5中org.springframework.scheduling.quartz.Cron ...
- spring boot apollo demo
spring boot apollo demo controller 监听器,监听配置实时变化 src/main/resources---->META-INF---->app.proper ...
最新文章
- script runat=server,%%区别
- 试试这款针对JAVA应用的开源防火墙!
- Rectangle Area
- 多线程:Callable
- 科大星云诗社动态20210125
- 迁移pg_PG奥斯卡!云数据库专属集群MyBase荣获2020 PG亚洲大会“年度最佳产品奖”...
- DNS DHCP 路由 FTP
- JVM菜鸟进阶高手之路
- 基于E18-2G4U04B的ZigBee3.0无线数据抓包安装方法
- 树莓派基金会来号召用键盘生物学家研究企鹅
- linux和windows输入法,关于输入法框架,这里有可以跨平台的linux和windows。。。。...
- eclipse快速导包快捷键_【IntelliJ IDEA mac新手入门】IDEA如何快速搭建Java开发环境...
- Quartz任务监控管理
- 目前找到的对龙枪最清晰的介绍。
- 51采集温度电压电流+LCD1602显示
- vue3 effect
- bs前端--弹出子窗体
- 下载网易云音乐的MV
- 雇佣兵(程序设计与算法(一))
- C++实现“23”抽签小游戏