`

Quartz作業調度在web中,配置XML實現

阅读更多

一,quratz比較詳細的教程:http://www.blogjava.net/Unmi/archive/2008/08/24 /223926.html。還可以直接下載教程,很全面。jar包下載地址:http://www.opensymphony.com/quartz/ 。

二,需要快速開發一個簡單的任務調度,請看下面:

參考資料:http://callan.iteye.com/blog/160139

常常会在Web应用中需要启动一个自己写的服务,比如说刷新主页,统计数据等,下面提供一种简单的方式.

(一)作業類:
通過實現 org.quartz.job 接口 , 覆盖了 execute(JobExecutionContext context) 方法。
这个方法可以包含我们想要执行的任何代码。

----------------------------------------------------------------------------------------------------------------------------------

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class CoinJob implements Job{
    public CoinJob(){
    }
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
          System.out.println("MyJob----"  +  new  Date());   //這個方法裡面寫入你想要執行的內容
    }
}

----------------------------------------------------------------------------------------------------------------------------------

(二)編寫quartz.properties文件:

這個文件的默認名稱是quartz.properties。如果在項目啟動的時候,Quartz沒有在工程中找到該文件,則會從自己的jar包讀取其默認的quartz.properties文件。

quartz.properties

#---------调度器属性----------------

org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one

#---------线程配置---------------
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadPriority = 4

#---------作业存储设置------------
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

#---------插件配置-------------
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml

属性的介绍

1.调度器属性:分别设置调度器的实例名( instanceName ) 和实例 ID ( instanceId )。属性 org.quartz.scheduler.instanceName 可以是你喜欢的任何字符串。默认名字一般都采用 QuartzScheduler, 第二个属性org.quartz.scheduler.instanceIdinstaneName 属性一样,instanceId 属性也允许任何字符串。这个值必须是在所有调度器实例中是唯一的,尤其是在一个集群当中。假如你想 Quartz 帮你生成这个值的话,可以设置为 AUTO

2、线程池属性: 这些线程在 Quartz 中是运行在后台担当重任的。threadCount 属性控制了多少个工作者线程被创建用来处理 Job。原则上是,要处理的 Job 越多,那么需要的工作者线程也就越多。threadCount 的数值至少为 1 。Quartz 没有限定你设置工作者线程的最大值,但是在多数机器上设置该值超过100的话就会显得相当不实用了,特别是在你的 Job 执行时间较长的情况下。这项没有默认值,所以你必须为这个属性设定一个值。

threadPriority 属性设置工作者线程的优先级。优先级别高的线程比级别低的线程更优先得到执行。threadPriority 属性的最大值是常量 java.lang.Thread.MAX_PRIORITY ,等于10。最小值为常量 java.lang.Thread.MIN_PRIORITY ,为1。这个属性的正常值是 Thread.NORM_PRIORITY ,为5。大多情况下,把它设置为5,这也是没指定该属性的默认值。

最后一个要设置的线程池属性是 org.quartz.threadPool.class 。这个值是一个实现了 org.quartz.spi.ThreadPool 接口的类的全限名称。Quartz 自带的线程池实现类是 org.quartz.smpl.SimpleThreadPool ,它能够满足大多数用户的需求。这个线程池实现具备简单的行为,并经很好的测试过。它在调度器的生命周期中提供固定大小的线程池。你能根据需求创建自己的线程池实现,如果你想要一个随需可伸缩的线程池时也许需要这么做。这个属性没有默认值,你必须为其指定值。

3、作业存储属性: 作业存储部分的设置描述了在调度器实例的生命周期中,Job 和 Trigger 信息是如何被存储的。把调度器信息存储在内存中非常的快也易于配置。当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。要使 Job 存储在内存中需通过设置 org.quartz.jobStrore.class 属性为 org.quartz.simpl.RAMJobStore,在 Cron Trigger 和“作业存储和持久化”会用到的不同类型的作业存储实现。

4、其他插件属性:org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin默认时, JobInitializationPlugin插件会在 classpath 中搜索名为 quartz_jobs.xml 的文件并从中加载 Job 和 Trigger 信息。 其他插件后叙……

 

然後要編寫quartz.properties中“org.quartz.plugin.jobInitializer.fileName = quartz_job.xml”的 quartz_job.xml文件,如下:

----------------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
  <quartz> 
     <job> 
          <job-detail> 
              <name>coinJob</name>             // job名
             <group>job</group>                        // job組
             <job-class>com.top.scheduler.CoinJob</job-class>   //實現類
        </job-detail> 
          <trigger> 
             <cron> 
                  <name>t1</name> 
                  <group>job</group> 
                   <job-name>coinJob</job-name>  //該觸發器trigger對應的job名
                 <job-group>job</job-group>     //該觸發器trigger對應的job組
                 <cron-expression>0/30 * * * * ?</cron-expression>   //每隔30秒出發一次
            </cron> 
          </trigger> 
     </job> 
  </quartz>  

----------------------------------------------------------------------------------------------------------------------------------

<cron-expression>0/20 * * * * ?</cron-expression>

Quartz的Cron 表达式包括以下 7 个字段:秒 分 小时 月内日期 月 周内日期 年(可选字段)
意思是:从0秒开始计算,安排任务每 30秒执行一次。

(三)修改配置web.xml
----------------------------------------------------------------------------------------------------------------------------------
<servlet> 
     <servlet-name>quartz</servlet-name> 
     <servlet-class> 
         org.quartz.ee.servlet.QuartzInitializerServlet 
     </servlet-class> 
     <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>   
     <load-on-startup>1</load-on-startup> 
     </servlet> 

<!-- 或者監聽器也可以
     <context-param> 
     <param-name>config-file</param-name> 
     <param-value>/quartz.properties</param-value> 
      </context-param> 
  
     <context-param> 
         <param-name>shutdown-on-unload</param-name> 
         <param-value>true</param-value> 
     </context-param> 
      
     <context-param> 
         <param-name>start-scheduler-on-load</param-name> 
         <param-value>true</param-value> 
     </context-param>
       
     <listener> 
         <listener-class> 
             org.quartz.ee.servlet.QuartzInitializerListener 
         </listener-class> 
     </listener> 
    -->
----------------------------------------------------------------------------------------------------------------------------------

分享到:
评论

相关推荐

    Quartz(作业调度)

    在Spring框架中,Quartz可以被集成来实现复杂的定时任务调度。本文将深入探讨Quartz的使用,包括其基本概念、配置、API以及在Web应用中的实际应用。 首先,Quartz的核心概念包括Job(作业)、Trigger(触发器)和...

    web环境下Quartz作业调度入门源代码(Jboss)

    本示例“web环境下Quartz作业调度入门源代码(Jboss)”提供了一个基础的Quartz在Web应用中的实现,下面我们将详细探讨相关的知识点。 1. **Quartz简介** - Quartz是一个轻量级的作业调度框架,支持Cron表达式和复杂...

    Quartz任务调度在web中的简单使用

    在Web应用中,Quartz的配置通常在`web.xml`中进行。我们需要配置`SchedulerFactoryBean`,指定配置文件路径(如`quartz.properties`),并设置启动时自动初始化调度器: ```xml ...

    quartz开源作业调度框架

    1. **添加QuartzInitializerServlet**:在`web.xml`中配置`QuartzInitializerServlet`。 2. **配置文件**:可以通过配置文件`quartz.properties`或`quartz-job.xml`来定义触发器和定时描述等。 #### 五、Quartz高级...

    quartz实例 自动生成 表达式 动态更新 xml文件 tomcat自动加载

    在上下文初始化时,我们可以初始化Quartz调度器,并加载XML配置文件中的任务。同时,我们还需要设置一个文件监听器来监控XML配置文件,一旦文件变化,触发重新加载配置。 在实现过程中,需要注意几点: 1. 配置文件...

    Spring+Quartz实现任务调度的小例子

    在Spring中,我们可以定义一个实现了`org.springframework.scheduling.quartz.JobDetailBean`的bean,以及一个实现了`org.springframework.scheduling.quartz.CronTriggerBean`的bean,来分别表示Job和Trigger。...

    quartz定时执行任务,并配置web.xml的操作方法

    在 web.xml 文件中,需要配置 Quartz 的 ServletContextListener,以便于在服务器启动时执行任务。ServletContextListener 是一种特殊的 Servlet,能够监听 Servlet 容器的生命周期事件。 在上面的代码中,...

    quartz 在WEB中应用小结

    Quartz 是一个开源的作业调度框架,常用于Java Web应用程序中进行定时任务的管理。它提供了高度可配置性,能够灵活地安排、管理和执行任务,是企业级应用中不可或缺的一部分。这篇博客文章“quartz 在WEB中应用小结...

    spring2与quartz在Web整合

    同时,为了确保在应用关闭时能够停止所有调度,也需要在 Web.xml 中配置适当的销毁方法。 5. **错误和问题处理**:整合过程中可能会遇到的问题包括但不限于:库版本冲突、Scheduler 初始化失败、作业执行异常、线程...

    Java作业调度之Quartz

    Java作业调度之Quartz是一个广泛使用的开源任务调度框架,它允许开发者在应用程序中安排复杂的作业执行计划。Quartz是基于Java的,因此可以轻松地集成到任何Java应用程序中,包括Web应用。这篇博客文章(虽然链接...

    quartz任务调度框架简单实用小demo

    Quartz是一个开源的作业调度框架,它为Java应用程序提供了强大的定时和计划功能。在Java项目中,Quartz常被用来执行周期性...在实际开发中,你可以根据项目需求调整Job和Trigger的配置,实现更加复杂和灵活的任务调度。

    web工程quartz的配置实例

    Quartz是一款功能强大的开源作业调度框架,常用于Java Web应用中进行定时任务的管理。它提供了丰富的API,允许开发者灵活地定义和控制任务执行。在Web工程中集成Quartz,可以实现诸如定时发送邮件、数据同步、清理...

    Quartz定时调度样例

    接下来,需要在 web.xml 中配置 Quartz 的初始化Servlet: ```xml &lt;servlet-name&gt;QuartzInitializer &lt;servlet-class&gt;org.quartz.ee.servlet.QuartzInitializerServlet &lt;param-name&gt;config-file &lt;param-value&gt;...

    quartz调度系统工具.zip

    这个"quartz调度系统工具.zip"文件很可能包含了用于简化Quartz配置和管理的实用工具。 Quartz的核心概念包括: 1. **作业(Jobs)**:是实际执行的工作单元,开发者需要自定义Job类来实现特定的任务逻辑。 2. **...

    quartz通过cron实现web项目定时器

    Quartz是一款强大的、开源的作业调度框架,常用于Java应用程序中,包括Web项目,来实现定时任务的执行。本文将详细介绍如何使用Quartz结合cron表达式在Web项目中创建一个定时器。 首先,理解Quartz的基本概念至关...

    Spingboot+Quartz基于数据库的作业任务调度

    1. **引入依赖**:在Spring Boot的`pom.xml`或`build.gradle`文件中添加Quartz库的依赖。这将确保我们在项目中可以使用Quartz的相关类和API。 2. **配置Quartz**:在`application.properties`或`application.yml`中...

    定时任务 Quartz调度(采用配置文件)

    Quartz是一款开源的作业调度框架,它允许程序创建并管理定时任务。在Java开发中,Quartz被广泛用于实现各种周期性任务的自动化执行,比如数据备份、报表生成、系统维护等。本篇将深入探讨Quartz如何通过配置文件来...

    浅谈Quartz(WEB)

    8. **Web应用集成**:在Web环境中,可以通过Servlet上下文监听器(ServletContextListener)来启动和停止Quartz调度器,使其与Web应用的生命周期同步。 9. **实战示例**:博客文章可能包括创建一个简单的定时任务,...

    quartz定时任务,在web项目中的使用方法

    Quartz是一款开源的作业调度框架,它允许在Java应用程序中创建和执行定时任务。在Web项目中使用Quartz,可以实现后台任务的自动化执行,比如数据同步、日志清理、发送邮件等,无需用户手动触发。下面将详细介绍如何...

    spring集成quartz 任务调度

    在提供的"quartz-spring_demo-master"项目中,可能包含了完整的示例代码,包括Spring和Quartz的配置、作业和触发器的定义,以及如何在Spring环境中启动和管理这些任务。这个项目可以帮助你理解并实践Spring与Quartz...

Global site tag (gtag.js) - Google Analytics