参考
http://www.cnblogs.com/phinecos/archive/2008/09/03/1282747.html
http://www.blogjava.net/hwpok/archive/2008/08/19/223124.html
http://www.cnblogs.com/phinecos/archive/2008/09/03/1283376.html
com\ali\schedule\ quartz.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 name="dataImportjobDetail"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass"
value="com.ali.schedule.DailyDataImportJob" />
<property name="jobDataAsMap">
<map>
<entry key="dataImportService" value-ref="dataImportService" />
</map>
</property>
<property name="applicationContextJobDataKey"
value="applicationContext" />
</bean>
<bean id="dataImportService" class="com.ali.schedule.ProjDataImportService" />
<bean id="dataImportTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="dataImportjobDetail" />
<property name="cronExpression" value="*/5 * * * * ?" />
</bean>
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="dataImportTrigger" />
</list>
</property>
<property name="schedulerContextAsMap">
<map>
<entry key="timeout" value="30" />
</map>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">
org.quartz.simpl.SimpleThreadPool
</prop>
<prop key="org.quartz.threadPool.threadCount">10</prop>
</props>
</property>
</bean>
</beans>
值得注意的是:
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
</list>
</property>
</bean>
</beans>
调度程序:
packagecom.ali.schedule;
importorg.quartz.JobExecutionContext;
importorg.quartz.JobExecutionException;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importorg.springframework.scheduling.quartz.QuartzJobBean;
publicclassDailyDataImportJobextendsQuartzJobBean {
publicDailyDataImportJob()
{
}
protectedvoidexecuteInternal(JobExecutionContext jobcontext)throwsJobExecutionException
{
service.importData();
}
privateProjDataImportServiceservice;
publicvoidsetDataImportService(ProjDataImportService service)
{
this.service=service;
}
publicstaticvoidmain(String[] args){
//这里用于测试
String configPath ="com/ali/schedule/quartz.xml";
ApplicationContext ctx =newClassPathXmlApplicationContext(configPath);
ctx.getBean("scheduler");
}
}
真正执行任务程序:
packagecom.ali.schedule;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importorg.springframework.context.support.FileSystemXmlApplicationContext;
importcom.ali.IIbatisDAOImpl;
publicclassProjDataImportService{
publicvoidimportData() {
//当前路径下
String[] locations = {"com/ali/db/database.xml"};
ApplicationContext context =//new FileSystemXmlApplicationContext(locations);
new ClassPathXmlApplicationContext(locations);
IIbatisDAOImpl DAO = (IIbatisDAOImpl) context.getBean("IIbatisDAOImpl");
DAO.importHisProjData();
}
publicstaticvoidmain(String[] args) {
ProjDataImportServiceservice =newProjDataImportService();
service.importData();
}
}
依赖库:
需要加入spring.jar quartz.jar log4j-1.2.14.jar commons-collections.jar jta.jar commons-logging.jar这几个包
如上都是在控制台应用下执行。由于spring工程、ibatis工程读取xml文件路径与JBOSS/TOMCAT web应用路径都不一样。控制台测试成功后,需要更改如上java类XML路径依赖。
在WEB环境下使用调度程序,则需要在web.xml加载quartz.xml配置文件。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/database.xml
/WEB-INF/applicationContext.xml
/WEB-INF/quartz.xml
</param-value>
</context-param>