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>

 

 

 

 

目录
相关文章
|
26天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
43 3
|
26天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
131 45
|
4天前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
13 5
|
14天前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
|
16天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
22天前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
24 3
|
21天前
|
前端开发 JavaScript 开发工具
从框架到现代Web开发实践
从框架到现代Web开发实践
33 1
|
24天前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP 自发布以来一直在 Web 开发领域占据重要地位,历经多次重大更新,从简单的脚本语言进化为支持面向对象编程的现代语言。本文探讨 PHP 的演进历程,重点介绍其在 Web 开发中的应用及框架创新。自 PHP 5.3 引入命名空间后,PHP 迈向了面向对象编程时代;PHP 7 通过优化内核大幅提升性能;PHP 8 更是带来了属性、刚性类型等新特性。
25 3
|
27天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
26 3
|
27天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
38 2