`
wangrl
  • 浏览: 154428 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz 框架快速入门(三)

 
阅读更多

Quartz 框架快速入门(三)

     在前面两篇文章中简单介绍了在 java 应用程序中如何使用 Quartz 框架,这一篇中我们将看到如何在 web 环境下通过配置文件来完成 Quartz 的后台作业调度,而不必手工去创建 Trigger Scheduler ,其步骤如下:

首先创建一个 Web 项目,将 quartz-1.6.0.jar, 以及 lib 目录下面 core 下所有 jar optional 目录下的所有 commons-beanutils.jar commons-digester-1.7.jar build 目录下的 jta.jar 都放入 Web 项目的 WEB-INF"lib 目录下。

创建一个简单的 job HelloWorld ,它的功能很简单,就是输出当前的时间,代码如下:

package  com.vista.quartz;

import  java.util.Date;

import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;
import  org.quartz.Job;
import  org.quartz.JobExecutionContext;
import  org.quartz.JobExecutionException;

public   class  Helloworld  implements  Job
{
    
private   static  Log logger  =  LogFactory.getLog(Helloworld. class ); // 日志记录器
     public  Helloworld()
    {
    }
    
public   void  execute(JobExecutionContext context)  throws  JobExecutionException 
    {
        logger.info(
" Hello World! -  "   +   new  Date()); 
    }
}

然后按照上一篇文章《 Quartz 框架快速入门(二) 》中所讲述的内容 编写 quartz.properties 文件。如果启动项目的时候, Quartz 没有在工程中找到该文件,就会从自己的 jar 包下面读取其默认的 properties 文件,其内容如下

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore  
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
#============================================================================
# Configure Plugins 
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileNames = jobs.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

然后编写任务配置文件 jobs.xml ,内容如下:

<? xml version='1.0' encoding='utf-8' ?>
< quartz  xmlns ="http://www.opensymphony.com/quartz/JobSchedulingData"
  xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation
="http://www.opensymphony.com/quartz/JobSchedulingData
  http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"

  version
="1.5" >    
 
< job >       
    
< job-detail >       
     
< name > HelloWorld </ name >       
     
< group > DEFAULT </ group >       
     
< description >       
           A job that just for test       
     
</ description >       
     
< job-class >       
            com.vista.quartz.Helloworld      
     
</ job-class >       
     
< volatility > false </ volatility >       
     
< durability > false </ durability >       
     
< recover > false </ recover >           
  
</ job-detail >       
  
< trigger >       
    
< simple >       
     
< name > HelloTrigger1 </ name >       
     
< group > DEFAULT </ group >       
     
< job-name > HelloWorld </ job-name >       
     
< job-group > DEFAULT </ job-group >       
     
< start-time > 2008-09-03T15:56:30 </ start-time >       
     
<!--  repeat indefinitely every 10 seconds  -->       
     
< repeat-count > -1 </ repeat-count >       
     
< repeat-interval > 10000 </ repeat-interval >       
    
</ simple >       
  
</ trigger >       
</ job >       
</ quartz >

可以看到,在配置文件中把 jobdetail trigger 都作了完整的定义,并组合成一个 job 。下面,我们把上面两个文件都放入 /WEB-INF/classes 目录下,然后按照 api 中的说明修改一下 web.xml ,内容如下

<? 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 >   
    
</ servlet >   
  
< welcome-file-list >
    
< welcome-file > index.jsp </ welcome-file >
  
</ welcome-file-list >
</ web-app >

这样,在启动 Tomcat 的时候, QuartzInitializerServlet 这个 Servlet 就会自动读取 quartz.properties 这个配置文件,并初始化调度信息,启动 Scheduler

启动 tomcat 后,就可以看到输出的结果 :

作者:洞庭散人

出处:http://phinecos.cnblogs.com/     

本博客遵从Creative Commons Attribution 3.0 License ,若用于非商业目的,您可以自由转载,但请保留原作者信息和文章链接URL。

分享到:
评论

相关推荐

    Quartz框架快速入门

    ### Quartz框架快速入门详解 #### 一、Quartz框架简介 Quartz是一个开源的作业调度框架,用于开发Java应用程序。它提供了强大的触发器(Trigger)机制用于关联作业(Job),同时还具备灵活的表达式用于配置定时...

    Quartz 框架快速入门

    Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler

    Quartz 框架快速入门(一)

    NULL 博文链接:https://wangrl.iteye.com/blog/1125327

    Quartz框架快速入门.pdf

    Quartz框架是一款强大的开源任务调度库,广泛应用于Java环境下的定时任务管理。要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-&lt;version&gt;.jar,这是Quartz的核心库。除此之外,根据你的需求,...

    Quartz_框架快速入门

    本文将引导您快速入门 Quartz 框架,了解其基本使用方法。 首先,要开始使用 Quartz,您需要从官方网站下载对应的 JAR 包,通常为 quartz-&lt;version&gt;.jar。除此之外,根据您的需求,Quartz 可能还需要一些第三方库,...

    Quartz如何从入门到精通.pdf

    Quartz框架只需要少数的第三方库,并且这些三方库是必需的,你很可能已经在使用这些库了。 Quartz框架的配置文件quartz.properties文件是Quartz框架的核心配置文件,它包括了Quartz框架的所有配置信息。你可以通过...

    Java框架介绍Quartz从入门到进阶.pdf

    3. 添加第三方库:Quartz框架需要少数的第三方库,例如Jakarta Commons库等,可以将这些库添加到工程中。 Quartz框架的使用步骤: 1. 创建Job接口实现类:创建一个实现org.quartz.Job接口的Java类,并添加一些逻辑...

    Quartz如何从入门到精通

    #### 十三、Quartz框架的其他特征 除了基本的作业调度外,Quartz还提供了丰富的附加功能,包括集群支持、插件机制、EJB作业预构建、JavaMail集成等。这些特性大大扩展了Quartz的应用场景,使其成为一个全面的作业...

    Quartz定时器从入门到进阶

    这有助于开发者快速上手并深入了解Quartz的各种功能和配置选项。 Quartz内部架构由多个关键组件组成,包括调度器(Scheduler)、作业(Job)、触发器(Trigger)等。调度器负责管理作业和触发器,根据预设的调度...

    quartz实例,quartz入门例子

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行计划任务。这个实例是为初学者设计的,用于帮助理解Quartz的基本概念和使用方式。在MyEclipse 6.0.1环境下,你可以直接运行这个Spring整合Quartz的...

    Quartz任务调度快速入门

    #### 一、Quartz框架简介 Quartz是一个功能强大的开源作业调度框架,被广泛应用于Java应用中实现任务的定时调度。Quartz通过对任务调度领域的核心问题进行高度抽象,提炼出了三个核心概念:**调度器(Scheduler)**...

    任务调度Quartz框架

    Quartz框架自2001年发布以来,已经在许多项目中得到广泛应用。它提供了灵活的时间表定义,使得开发者可以精确地设定任务的触发时间。Quartz不仅支持一次性任务,还支持周期性的重复任务。框架的核心特性包括: 1. *...

    quartz入门到精通

    #### 四、Quartz框架的其他特征 1. **集群支持**:Quartz支持多节点集群部署,能够在集群环境中提供高可用性和负载均衡能力。 2. **性能优化**:Quartz通过高效的缓存机制和优化算法提升性能。 3. **安全性**:支持...

    Quartz中文入门教程

    Quartz中文入门教程 前言 Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 ...Quartz框架的其他特征 Quartz下一步计划 了解更多Quartz特征

    分布式调度框架quartz从入门到精通

    分布式调度框架Quartz是OpenSymphony开源组织推出的一款强大的任务调度工具,专为Java平台设计。Quartz可以方便地与其他J2EE或J2SE应用结合,也可以单独使用。它支持创建复杂的工作流,能够处理从简单到成千上万个...

    任务调度框架Quartz

    Quartz 体系结构可以分为三个核心概念:调度器、任务和触发器。 1.调度器(Scheduler):Quartz 的核心组件,负责管理和执行任务调度。调度器可以创建、执行和管理任务,包括触发器的创建、任务的执行和状态的管理...

Global site tag (gtag.js) - Google Analytics