spring quartz java项目_搭建第一个web项目:quartz+spring实现定时任务

测试过程:

先写了一个简单的任务类,测试配置的quartz是否启作用(最终目的是实现定时删除临时储存文件夹)。

spring中添加的配置文件如下:

Count

0-59 * * * * ?

任务类如下:

packagecn.itcast.oa.util;/*** 定时任务,清空临时文件夹

*

*@authorhaojiahong

*

* @createtime:2015-7-21 下午2:23:55

*

**/

public classTaskJob {static long Count = 0;publicTaskJob() {

System.out.println("Bean initialized.");

}public voiddoFirst() {

Count();

}public voidCount() {

Count++;

System.out.print("Count=");

System.out.println(Count);

}

}

最后测试成功,输出的结果如下:(任务类实例化之后,每隔一秒钟,调用一次Count方法)

信息: Initializing Spring root WebApplicationContext16:38:10,184 DEBUG MyApplicationContextUtil:24 -applicationContext进行设置完成。。。16:38:10,200 DEBUG FtpStore:31 -初始化了FTP服务器配置参数

Bean initialized.

Count=1Count=2Count=3

2015-7-22 16:38:12org.apache.coyote.http11.Http11Protocol start

信息: Starting Coyote HTTP/1.1 on http-8888

2015-7-22 16:38:12org.apache.jk.common.ChannelSocket init

信息: JK: ajp13 listening on/0.0.0.0:8009

2015-7-22 16:38:12org.apache.jk.server.JkMain start

信息: Jk running ID=0 time=0/16 config=null

2015-7-22 16:38:12org.apache.catalina.startup.Catalina start

信息: Server startup in7605ms

Count=4Count=5Count=6Count=7Count=8Count=9Count=10Count=11Count=12Count=13Count=14

第一次配置的时候出现了如下异常:

Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super classat java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:621)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)

at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)

at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)

at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)

at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)

at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)

...49 more

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

解决办法有两种:

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

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

最后是自己写的删除临时文件夹及其文件的任务类:

packagecn.itcast.oa.util;importjava.io.File;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;/*** 定时任务,清空临时文件夹

*

*@authorhaojiahong

*

* @createtime:2015-7-21 下午2:23:55

*

**/

public classTaskJob {private Log log = LogFactory.getLog(this.getClass());publicTaskJob() {

log.debug("初始化定时任务类完成。。");

}public voidexceteDelJob() {

String tempPath= (String) this.getAppConfig().getAppExtProp()

.get("fileTempPath");

System.out.println(tempPath);if (!delFile(tempPath)) {return;

}

}private booleandelFile(String tempPath) {

File file= newFile(tempPath);if (!file.exists()) {

log.debug("文件夹不存在");return false;

}if(file.isFile()) {

file.delete();

log.debug("单个文件删除成功");return true;

}

File[] files=file.listFiles();for(File f : files) {if(f.isFile()) {

f.delete();

log.debug("文件夹中单个文件删除成功");

}else{this.delFile(f.getAbsolutePath());

log.debug("开始删除文件夹中的文件夹");

}

}

file.delete();return true;

}publicAppConfig getAppConfig() {return (AppConfig) ApplicationUtil.getBean("appConfig");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值