`
piperzero
  • 浏览: 3477279 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

quartz调度框架在web中应用实例

 
阅读更多

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>

分享到:
评论

相关推荐

    Quartz-Job-Scheduling-Framework-中文版-V0.9.1.zip

    内容提要:在 Struts 框架中使用 Quartz,虚构了一个叫做 Job 管理控制台的 Web 应用,。需要在 Web 应用启动时创建一个 SchedulerFactory。 第十三章. Quartz 和 Web 应用 (第三部分) 内容提要:所幸 ...

    定时框架spring+quartz

    最新技术定时器与Spring进行融合,适合开发者进行web技术开发不错的案例。

    Spring+3.x企业应用开发实战光盘源码(全)

     第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。  第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。  第15章:对...

    Spring3.x企业应用开发实战(完整版) part1

    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 快速...

    Spring.3.x企业应用开发实战(完整版).part2

    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 快速...

    陈开雄 Spring+3.x企业应用开发实战光盘源码.zip

     第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。  第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。  第15章:...

    Spring中文帮助文档

    3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    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...

    Spring API

    3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...

    Spring 2.0 开发参考手册

    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攻略(第二版 中文高清版).part2

    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 ...

    Spring攻略(第二版 中文高清版).part1

    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 ...

    spring chm文档

    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 boot、spring cloud示例,可以给我提issue哦 ##...

    Java源码 SpringMVC Mybatis Shiro Bootstrap Rest Webservice

    集成Quartz调度,可以用作定时调度平台(动态配置调度类、调度时间,使程序自动执行某些业务) 6. Lucene搜索引擎,可以将文件资料索引化,支持文件内容搜索、关键字搜索、高亮关键字等,使信息在毫秒内提取查询...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7...

    javaOA办公系统模块设计方案.pdf

    备份定时器:quartz 强⼤的任务调度,多线程备份数据库,任务启动关闭异步操作 21. 数据库还原:历史备份记录,还原数据库 or 单表(sqlserver不⽀持),统计备份时间和⽂件⼤⼩ 22. SQL编辑器:强⼤的SQL编辑器,⽀...

Global site tag (gtag.js) - Google Analytics