package com.tht.common.job.spring;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* User: liuwen
* Date: 2010-11-6
* Time: 20:30:42
* To change this template use File | Settings | File Templates.
*/
public class JobData {
public String getDate(){
return "Data from "+new Date().toString();
}
}
package com.tht.common.job.spring;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
/**
* Created by IntelliJ IDEA.
* User: liuwen
* Date: 2010-11-6
* Time: 20:35:02
* To change this template use File | Settings | File Templates.
*/
public class DemoJob extends QuartzJobBean{
private JobData jobData;
@Override
protected void executeInternal(org.quartz.JobExecutionContext jobExecutionContext) throws JobExecutionException {
//To change body of implemented methods use File | Settings | File Templates.
System.out.println(jobData.getDate()+"执行了");
}
public JobData getJobData() {
return jobData;
}
public void setJobData(JobData jobData) {
this.jobData = jobData;
}
}
package com.tht.common.job.spring;
import org.apache.log4j.Logger;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
/**
* Created by IntelliJ IDEA.
* User: liuwen
* Date: 2010-11-6
* Time: 19:43:29
* To change this template use File | Settings | File Templates.
* 启动类,并控制何时关闭时钟任务
*/
public class TimerTaskDemo {
static Logger log=Logger.getLogger(TimerTaskDemo.class);
public static void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("beans-config.xml");
log.info("启动任务。。。。。。");
log.info("请输入exit,关闭任务");
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
while(true){
try {
if(reader!=null && "exit".equals(reader.readLine())){
break;
}
} catch (IOException e) {
log.error(e.getMessage(), e.fillInStackTrace());
}
}
Scheduler scheduler =(Scheduler)context.getBean("schedulerFactoryBean");
try {
scheduler.shutdown();
} catch (SchedulerException e) {
log.error(e.getMessage(), e.fillInStackTrace());
}
}
}
beans-config.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">
<bean id="someData" class="com.tht.common.job.spring.JobData"/><!-- 时钟任务,执行任务时,会调用该类中的 run()方法,来执行。。。 -->
<bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.tht.common.job.spring.DemoJob"></property>
<property name="jobDataAsMap">
<map>
<entry key="jobData" value-ref="someData"></entry>
</map>
</property>
</bean>
<bean id="cronTriggerBean"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetailBean"/>
<!-- 0 36 21 * * ?表示每天21点18分,执行任务 ; 0 0 7 * * ? 表示每天7点执行任务 多个时间点执行用逗号分开 -->
<property name="cronExpression" value="0 36 21 * * ?"/>
</bean>
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerBean"/>
</list>
</property>
</bean>
</beans>
log4j.properties
log4j.rootLogger=DEBUG,CONSOLE,R
log4j.addivity.org.apache=true
#ConsoleAppender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p [%t] -%l - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
#FileAppender
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=E\:/log/20101104/backup.log
log4j.appender.R.DatePattern = '.'yyyy-MM-dd-HH-mm
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] -%l - %m%n