`
baggio1024
  • 浏览: 64452 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类

用Quartz实现定时任务

阅读更多
你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果 发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用java编程吗?如果这些问题中任何一个你回答是,那么你应该使用 Quartz调度器。 旁注:Matrix目前就大量使用到了Quartz。比如,排名统计功能的实现,在Jmatrix里通过Quartz定义了一个定时调度作业,在每天凌晨一点,作业开始工作,重新统计大家的Karma和排名等。 还有,RSS文件的生成,也是通过Quartz定义作业,每隔半个小时生成一次RSS XML文件。        Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个, 甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。        http://www.opensymphony.com/quartz/
从下载连接取得Quartz的发布版本,并且解压到到本地 目录。这个下载文件包含了一个预先构建好的Quartz二进制文件(quartz.jar),你可以将它放进自己的应用中。Quartz框架只需要少数的 第三方库,并且这些三方库是必需的,你很可能已经在使用这些库了。

你要把Quartz的安装目录的

quartz.properties文件

Quartz有一个叫做 quartz.properties的配置文件,它允许你修改框架运行时环境。缺省是使用Quartz.jar里面的quartz.properties 文件。当然,你应该创建一个quartz.properties文件的副本并且把它放入你工程的classes目录中以便类装载器找到它。 quartz.properties样本文件如例1所示。

例1.quartz.properties文件允许修改Quartz运行环境:



一旦将Quartz.jar文件和第三方库加到自己的工程里面并且quartz.properties文件在工程的classes目录中,就可以创建作业了。

1. 在web.xml里面加上

            package.ContextListener

这样就可以在部署的时候启动定时器。

package.ContextListener.java


package package;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.quartz.SchedulerException;

public class ContextListener implements ServletContextListener {

Runner qRunner = null;
    public void contextInitialized(ServletContextEvent arg0) {
        // init job
        // start schedule task
        try {
            qRunner = new Runner();
            qRunner.task();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void contextDestroyed(ServletContextEvent arg0) {
        try {
           // stop task
            qRunner.stop();

        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
}Runner.java

import org.quartz.CronExpression;

import org.quartz.CronTrigger;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SchedulerFactory;

import org.quartz.impl.StdSchedulerFactory;



/**

*/

public class Runner {



    static Scheduler scheduler = null;



    public void task() throws SchedulerException {

        // Initiate a Schedule Factory

        SchedulerFactory schedulerFactory = new StdSchedulerFactory();

        // Retrieve a scheduler from schedule factory

        scheduler = schedulerFactory.getScheduler();



        // current time

        long ctime = System.currentTimeMillis();



        // Initiate JobDetail with job name, job group, and executable job class

        JobDetail jobDetail = new JobDetail("jobDetail1", "jobDetailGroup1",

                YourScheduleJob.class);

        // Initiate CronTrigger with its name and group name

        CronTrigger cronTrigger = new CronTrigger("cronTrigger",

                "triggerGroup1");

        try {

            // setup CronExpression

            CronExpression cexp = new CronExpression("0/180 * * * * ?");

            // Assign the CronExpression to CronTrigger

            cronTrigger.setCronExpression(cexp);

        } catch (Exception e) {

            e.printStackTrace();

        }

        // schedule a job with JobDetail and Trigger

        scheduler.scheduleJob(jobDetail, cronTrigger);



        // start the scheduler

        scheduler.start();

    }



    public void stop() throws SchedulerException {

        scheduler.shutdown();

    }

public static void main(String args[]) {

        try {

            Runner qRunner = new Runner();

            qRunner.task();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }



}YourScheduleJob.java


import java.util.Date;



import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;



public class YourScheduleJob implements Job {

   

    public void execute(JobExecutionContext context) throws JobExecutionException {

        System.out.println("In SimpleQuartzJob - executing its JOB at "

                + new Date() + " by " + context.getTrigger().getName());

      

        // your job here

      

    }



}具体配置可以参见:http://whj0427.iteye.com/blog/142680或者见Reg_login也可以参见这里:http://yahaitt.iteye.com/blog/122720进行非Web运用。
分享到:
评论

相关推荐

    Springboot整合Quartz实现定时任务数据库动态配置

    本篇文章将详细探讨如何在Spring Boot项目中整合Quartz,并通过MySQL数据库实现定时任务的动态配置。 首先,我们需要在项目中添加依赖。在Spring Boot的`pom.xml`文件中,引入Spring Boot的`spring-boot-starter-...

    ASP.NET使用Quartz.NET实现定时任务调度

    结合使用Quartz.NET和TopShelf,我们可以构建一个在Windows服务中运行的定时任务调度系统。 Quartz.NET的特性包括: 1. **灵活的调度**:Quartz.NET支持多种调度模式,如简单触发器、cron触发器,可以按照精确时间...

    定时任务quartz实现分组串行并行动态配置

    本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...

    基于SSM+quartz的定时任务管理demo

    本Demo以"基于SSM+quartz的定时任务管理"为主题,将展示如何在Spring、SpringMVC和MyBatis(SSM)框架基础上,集成Quartz作为调度引擎,实现高效灵活的定时任务管理。 **1. SSM框架简介** SSM是Spring、SpringMVC...

    C# quartz.net 定时任务源码 可以远程控制

    综上所述,这个项目提供了一种使用C#和Quartz.NET创建可远程控制的定时任务解决方案。它不仅能够根据需求动态加载新的DLL扩展任务,还能够作为Windows服务稳定运行,满足了企业级应用对定时任务的高要求。对于想要...

    spring+springMVC+mybatis+quartz动态定时任务创建

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+mybatis+quartz动态定时任务创建"就是一个常见的技术栈,用于实现这样的目标。这个组合充分利用了各组件的优势,提供了强大的后端服务支持...

    ssm集成quartz完成定时任务

    SSM(Spring、SpringMVC、MyBatis)框架与Quartz的集成是Java开发中常见的一种实现定时任务的方法。Quartz是一个强大的开源作业调度框架,可以用来执行定时任务,而SSM作为主流的Java Web开发框架,为业务逻辑处理...

    SpringBoot 整合Quartz(集群)实现定时任务调度

    SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...

    C# Quartz.Net定时任务操作明细、完整过程

    本文将详细介绍如何使用Quartz.Net进行定时任务的配置与执行。 首先,**通过Nuget安装框架**非常简单,只需在Visual Studio中打开Nuget包管理器,搜索"Quartz.Net",然后安装指定版本,例如2.5.0。安装完成后,即可...

    spring整合java quartz实现动态定时任务的前台网页配置与管理

    可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合实现动态的改变定时任务的状态的一个...

    spring+quartz实现定时任务动态管理

    本项目旨在实现对Quartz定时任务的动态管理,包括添加、停止和恢复等操作。前端采用jQuery和Bootstrap构建,提供用户友好的可视化界面,同时应用了MyBatis分页插件来优化数据查询性能。 首先,让我们详细了解一下...

    使用Quartz实现定时功能

    ### 使用Quartz实现定时功能 #### 一、Quartz简介 Quartz是一个全面的、开源的作业调度器,...通过对上述核心概念的理解以及示例代码的分析,我们可以更好地掌握如何在Java应用程序中利用Quartz实现定时任务的功能。

    完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题

    在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...

    springboot jpa quartz动态定时任务

    springboot jpa quartz 动态定时任务,任务增加,任务删除,任务修改demo,非常简单

    quartz动态控制定时任务

    Quartz是一个开源的任务调度框架,可以用来实现定时任务的调度,如定时发送邮件、定时备份数据等。Quartz具有很高的可靠性和灵活性,支持集群部署和分布式调度,并且提供了丰富的API和插件,可以轻松实现复杂的调度...

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    在"Quartz.net作业调度自定义定时执行任务多任务执行c#"这个主题中,我们将深入探讨如何使用Quartz.NET来实现自定义的定时任务,以及如何处理多任务执行。 首先,我们需要理解Quartz.NET的基本概念。在Quartz.NET中...

    java quartz 定时任务

    在Java中,可以使用ScheduledExecutorService或者Quartz来实现定时任务。 3. **Cron表达式**: - Cron表达式是Unix cron服务的一种时间格式,用于定义任务的执行时间。它由7个子字段组成(秒、分钟、小时、日期、...

    quartz 动态执行定时任务

    通过上述介绍,我们可以看到使用 Quartz 实现动态定时任务不仅可以大大提高系统的灵活性,还能更好地满足业务需求的变化。同时,通过对数据库配置信息的动态加载和更新,还可以实现更加精细化的任务管理和控制。当然...

    Quartz 定时任务web使用

    Quartz 是一个开源的作业调度框架,常用于Java应用程序中实现定时任务的管理。它提供了丰富的API和功能,使得开发者可以灵活地定义和控制任务的执行。本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的...

    使用Quartz执行定时任务

    Quartz是一款功能强大的开源Java定时任务框架,常用于在企业级应用中实现定时调度任务。它允许开发者定义作业(Jobs)和触发器(Triggers),并由Scheduler负责管理和执行这些任务。Quartz的核心优势在于其灵活性和...

Global site tag (gtag.js) - Google Analytics