`
hyc2613
  • 浏览: 10071 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java定时器 quartz

阅读更多
最近在项目中,要用到定时器,需要每个月清理一次服务器端的某个临时文件夹。自然而然就想到了quartz,但是以前只是挺同事说起过,自己还没真正的用过,现在就自己动手来做一个吧,先从google开始,呵呵。
参看了google的一些资料以后,大致了解了一下。先给出官方的api地址吧:http://opensymphony.com/quartz/api/。先去下载quartz的jar包吧。我用的是quartz-1.5.2.jar。使用quartz,首先你需要创建一个job类,这个类要实现org.quartz.Job接口,然后实现它的execute方法,这个execute方法里面执行的操作,就是最终你的定时器要完成的业务了。
先给出我的一段代码吧:
public class DeleteReportTempJob implements Job {

	@SuppressWarnings("unchecked")
	public void execute(JobExecutionContext context) throws JobExecutionException
	{
        // 获得jobDetail传过来的参数 
		Map<String,Object> map = context.getJobDetail().getJobDataMap();
		ServletContext servletContext = (ServletContext)map.get("servletContext");
		String reportTemplatePath = servletContext.getRealPath("/WEB-INF") + System.getProperty("file.separator");
		reportTemplatePath = reportTemplatePath.replace('\\', '/');

        // 获得临时文件夹的路径
		String dir = reportTemplatePath.substring(0, reportTemplatePath.indexOf("/WEB-INF")) + "/reportTemp/";

        File file = new File(dir);
        
        try
        {
        	if(file.exists() && file.isDirectory())
        	{
        		// Cleans a directory without deleting it.
            	FileUtils.cleanDirectory(file);
        	}
        }
        catch(IOException e)
        {
        	e.printStackTrace();
        }
	}

}


然后就是新建一个servlet继承org.quartz.ee.servlet.QuartzInitializerServlet可以去看看这个类的api,里面写的非常详细。
代码如下:
	/**
	 * 初始化
	 * @param ServletConfig cfg
     * @return 
	 */
	public void init(ServletConfig cfg) throws javax.servlet.ServletException 
	{
		super.init(cfg);
		run(cfg);
	}
	
	/**
	 * 创建一个调度器<code>Scheduler<code>的实例。
	 * 实例化一个监控定制报表表的线程,并启动该线程。
	 * @param ServletConfig cfg
     * @return 
	 */
	public void run(ServletConfig cfg)
	{
		ServletContext servletContext = cfg.getServletContext();
		SchedulerFactory factory = (SchedulerFactory)cfg.getServletContext().getAttribute(QUARTZ_FACTORY_KEY);
		Scheduler sched;
		try 
		{
			sched = factory.getScheduler();
			sched.start();
			JobDetail jobDetail = new JobDetail(jobName, Scheduler.DEFAULT_GROUP,   
					DeleteReportTempJob.class);  
			// 将ServletContext对象放到map中,然后从job中取出来,从而取得路径
			Map<String,Object> map = new HashMap<String,Object>();
			map.put("servletContext", servletContext);
			JobDataMap dateMap = new JobDataMap(map);
			jobDetail.setJobDataMap(dateMap);
			
			// fire at the first day 00:00 in every month, start right now  
			Trigger trigger = TriggerUtils.makeMonthlyTrigger(triggerName, 1, 0, 0);
			// test code
			// SimpleTrigger trigger = new SimpleTrigger("testTrigger"+triggerName, Scheduler.DEFAULT_GROUP,0,90000);
			
			// start on the next hour  
			// trigger.setStartTime(TriggerUtils.getEvenHourDate(new Date())); 
			
			// start on the next minute
			// trigger.setStartTime(TriggerUtils.getEvenMinuteDate(new Date())); 
			sched.scheduleJob(jobDetail, trigger);
		} 
		catch (SchedulerException e) 
		{
			e.printStackTrace();
		}
		
	}

如果是比较简单的定时器,可以直接通过TriggerUtils类来获得Trigger,他里面有每天触发,每个星期触发,每个月触发等等函数。如果是比较复杂的话,可以创建Trigger的两个子类来实现,详见api。通过TriggerUtils类来创建的Trigger,默认的开始时间都是‘now’,也就是web应用启动的时候。当然你也可以自己设置。

最后在web.xml里面配置一下上面的servlet就行了。<load-on-startup>1</load-on-startup>,随web应用而装载。
分享到:
评论

相关推荐

    JAVA定时器Quartz及使用说明

    Quartz是一款功能强大的开源Java定时框架,用于在Java应用程序中创建和管理计划任务。它允许开发者精确地安排作业,从简单的一次性任务到复杂的调度模式。Quartz 1.5.2是该项目的一个较旧版本,但它仍然包含了实现...

    Java定时器 quartz jar包

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建...Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    Java定时器框架(Quartz)

    Java定时器框架Quartz是Java开发中用于任务调度的一个强大工具,它允许开发者精确地控制任务的执行时间,包括一次性任务和周期性任务。Quartz以其灵活性和稳定性,在企业级应用中广泛使用,尤其在需要定期执行后台...

    java开源定时器Quartz

    Quartz是一款功能强大的Java开源定时任务框架,它允许开发者创建、调度和执行各种类型的任务,以实现应用程序的自动化和批处理。Quartz以其灵活的API、丰富的特性以及稳定性,成为了许多企业级应用首选的定时解决...

    SSM定时器quartz DEMO

    SSM定时器Quartz是一个广泛使用的Java定时任务框架,它允许开发者在应用程序中安排复杂的作业执行计划。在Java世界里,Quartz是一个强大的工具,它能够处理大量的并发任务,并提供了丰富的API来创建、调度和管理任务...

    spring java 定时器 执行两次 quartz

    Quartz是一款强大的开源任务调度库,它能够与Java应用程序无缝集成,实现复杂的时间触发任务。当我们遇到Spring定时器执行两次或者更多次的问题时,这通常是由于配置不当或者多线程并发导致的。下面将详细介绍如何...

    JAVA定时器JAVA定时器.pdf

    JAVA定时器是一种基于Quartz框架的任务调度器,用于在指定的时间执行特定的任务。在 Spring 框架中,JAVA定时器可以与Quartz框架集成,实现自动执行任务的功能。 1. JAVA定时器的基本概念 JAVA定时器是基于Quartz...

    Spring定时器quartz

    Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...

    Java定时器的使用 Java程序

    在实际开发中,Java定时器常与其他框架结合使用,如Spring的`@Scheduled`注解或Quartz等高级定时任务库,以实现更复杂的定时任务需求。 通过以上的讲解,你应该对Java定时器的使用有了深入的理解。在实际项目中,...

    定时器quartz的使用方法

    本教程将详细讲解如何使用Quartz实现一个简单的定时器功能。 首先,我们需要引入Quartz的依赖库到项目中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler ...

    定时器quartz API文档

    Quartz是Java平台上的一款强大的任务调度框架,它允许开发者创建、调度和管理作业与触发器。这个API文档详细地介绍了如何使用Quartz进行任务的定时执行。Quartz的核心概念包括Job(作业)、Trigger(触发器)和...

    java Quartz定时器任务与Spring task定时的几种实现方法

    在Java开发中,定时任务的实现有多种方式,其中Java Quartz和Spring Task是常用的两种解决方案。本文将详细介绍这两种定时任务的实现方法,并对比它们的特点。 首先,我们来看Java自带的`java.util.Timer`类。虽然...

    java定时器设置及停止的方法

    在Java编程中,定时任务是不可或缺的一部分,它们用于执行周期性操作,如数据备份、监控、清理等。本文将深入探讨如何在Java中设置和停止定时任务,主要关注`java.util.Timer`和`java.util.TimerTask`,以及更现代的...

    idea 使用spring自带的定时器quartz 使用的c3p0 v0.95.2所包含的jar

    `Spring`框架是Java开发中的一个核心组件,它提供了诸如依赖注入、AOP(面向切面编程)以及事务管理等功能。`Quartz`是一个开源的工作调度器,可以用来执行定时任务。这里我们讨论的是如何在`IDEA`中结合`Spring`和`...

    定时器quartZ

    【标题】:“定时器Quartz” Quartz是一个开源的工作调度框架,它允许程序在特定时间执行任务,类似于Java中的ScheduledExecutorService,但提供了更高级别的功能。Quartz主要用于企业级应用,可以创建、调度和执行...

    quartz+maven,Java定时器

    这个压缩包“quartz_maven”很可能是包含了一个使用Quartz和Maven构建的Java定时器示例项目。 在这个项目中,开发者可能已经配置好了一切必要的设置,包括Maven的pom.xml文件,用于声明项目依赖,特别是对Quartz库...

    定时器quartz的应用

    总的来说,“定时器Quartz的应用”这篇博客文章可能详细介绍了Quartz在Java开发中的使用,涵盖了从基本概念到高级特性的各个方面,对于想要学习和掌握任务调度的开发者来说是一份宝贵的学习资料。通过理解Quartz的...

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    定时器 quartz 和 spring

    标题 "定时器 quartz 和 spring" 涉及到的是两个在Java开发中非常重要的框架——Quartz和Spring。Quartz是一个开源的工作调度框架,它允许开发者创建、调度和执行任务,而Spring则是一个功能丰富的应用程序框架,...

Global site tag (gtag.js) - Google Analytics