quartz调度框架在web中应用实例
1. 在web.xml中配置 初始化quartz 相关servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<display-name>Quartz Initializer Servlet</display-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意:其中配置参数为 /quartz.properties文件
2. 在 quartz.properties 中配置相关参数
如下
org.quartz.scheduler.instanceName = PushDBScheduler
org.quartz.scheduler.instanceId = one
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 4
org.quartz.threadPool.threadPriority = 4
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
注意:org.quartz.plugin.jobInitializer.fileName=quartz_job.xml
3. 在quartz_job.xml中配置调度任务相关内容
<?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://www.quartzscheduler.org/ns/quartz"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartzscheduler.org/ns/quartz http://www.quartzscheduler.org/ns/quartz/job_scheduling_data_1_1.xsd"
version="1.1">
<job>
<job-detail>
<name>ScanItemsInDB</name>
<group>Scanning</group>
<job-class>com.artron.base.task.ScanDB</job-class>
<job-data-map allows-transient-data="true">
<entry>
<key>testmode</key>
<value>true</value>
</entry>
</job-data-map>
</job-detail>
<trigger>
<cron>
<name>t1</name>
<group> Scanning </group>
<job-name>ScanItemsInDB</job-name>
<job-group>Scanning</job-group>
<cron-expression>0/3 * * * * ?</cron-expression>
</cron>
</trigger>
</job>
<job>
<job-detail>
<name>Mail</name>
<group>MailScanning</group>
<job-class>com.artron.base.task.MailJob</job-class>
<job-data-map allows-transient-data="true">
<entry>
<key>ttt</key>
<value>true</value>
</entry>
</job-data-map>
</job-detail>
<trigger>
<cron>
<name>Mailt1</name>
<group>MailScanning</group>
<job-name>Mail</job-name>
<job-group>MailScanning</job-group>
<cron-expression>0/3 * * * * ?</cron-expression>
</cron>
</trigger>
</job>
</quartz>
可以配置多个任务类。重复job节点即可
4. 编写 需要调度的任务类:
这里配置了两个类:
package com.artron.base.task;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class ScanDB implements Job {
public ScanDB() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("time:" + System.currentTimeMillis());
}
}
package com.artron.base.task;
import java.util.Hashtable;
import java.util.Vector;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.artron.base.db.DBBean;
import com.artron.base.log.LogException;
import com.artron.base.log.LogWriter;
public class MailJob implements Job {
public MailJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("time:"+System.currentTimeMillis());
DBBean dbbean=new DBBean();
String select_sql="select id from t_yh where state=0 and rownum<20";
try {
Vector ids=dbbean.execute(select_sql);
for (int i=0;i<ids.size();i++)
{
Hashtable h=(Hashtable)ids.elementAt(i);
String id=(String)h.get("ID");
String sql="update t_yh set state=1 where id="+id;
dbbean.executeSql(sql);
System.out.println("处理内容id:"+id);
}
if (ids.size()==0)
{
System.out.println("暂无任务内容");
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
注意:lib包括quartz-1.6.6.jar ,common相关包,jta.jar包等。
然后启动tomcat就可以看到执行效果了。
<?xml version='1.0' encoding='utf-8'?>
<quartz xmlns="http://www.quartzscheduler.org/ns/quartz"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartzscheduler.org/ns/quartz http://www.quartzscheduler.org/ns/quartz/job_scheduling_data_1_1.xsd"
version="1.1">
<job>
<job-detail>
<name>CollectJob</name>
<group>CollectJobs</group>
<job-class>com.xxx.CollectJob</job-class>
<volatility>false</volatility>
<durability>false</durability>
<recover>false</recover>
</job-detail>
<trigger>
<simple>
<name>CollectTrigger</name>
<group>DEFAULT</group>
<job-name>CollectJob</job-name>
<job-group>DEFAULT</job-group>
<start-time>2008-11-30T10:00:00 AM</start-time>
<!-- repeat indefinitely every day -->
<repeat-count>-1</repeat-count>
<repeat-interval>7200000</repeat-interval>
</simple>
</trigger>
</job>
</quartz>
分享到:
相关推荐
内容提要:在 Struts 框架中使用 Quartz,虚构了一个叫做 Job 管理控制台的 Web 应用,。需要在 Web 应用启动时创建一个 SchedulerFactory。 第十三章. Quartz 和 Web 应用 (第三部分) 内容提要:所幸 ...
最新技术定时器与Spring进行融合,适合开发者进行web技术开发不错的案例。
第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。 第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。 第15章:对...
13.6.4 Web应用程序中调度器的启动和关闭问题 13.7 小结 第14章 使用OXM进行对象XML映射 14.1 认识XML解析技术 14.1.1 什么是XML 14.1.2 XML的处理技术 14.2 XML处理利器:XStream 14.2.1 XStream概述 14.2.2 快速...
13.6.4 Web应用程序中调度器的启动和关闭问题 13.7 小结 第14章 使用OXM进行对象XML映射 14.1 认识XML解析技术 14.1.1 什么是XML 14.1.2 XML的处理技术 14.2 XML处理利器:XStream 14.2.1 XStream概述 14.2.2 快速...
第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。 第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。 第15章:...
3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...
3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 4.2. Resource 接口 4.3. 内置 Resource 实现 4.3.1. UrlResource 4.3.2. Class...
3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...
3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 4.2. Resource 接口 4.3. 内置 Resource 实现 4.3.1. UrlResource 4.3.2. ...
6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 ...
6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 ...
3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 4.2. Resource 接口 4.3. 内置 Resource 实现 4.3.1. UrlResource 4.3.2. ...
每个示例都带有详细的介绍文档、作者在使用过程中踩过的坑、解决方案及参考资料,方便快速上手为你提供学习捷径,少绕弯路,提高开发效率。 有需要写关于spring boot、spring cloud示例,可以给我提issue哦 ##...
集成Quartz调度,可以用作定时调度平台(动态配置调度类、调度时间,使程序自动执行某些业务) 6. Lucene搜索引擎,可以将文件资料索引化,支持文件内容搜索、关键字搜索、高亮关键字等,使信息在毫秒内提取查询...
再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7...
备份定时器:quartz 强⼤的任务调度,多线程备份数据库,任务启动关闭异步操作 21. 数据库还原:历史备份记录,还原数据库 or 单表(sqlserver不⽀持),统计备份时间和⽂件⼤⼩ 22. SQL编辑器:强⼤的SQL编辑器,⽀...