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

Spring的Quartz定时器同一时刻重复执行二次的问题解决

 
阅读更多
源:http://www.linuxidc.com/Linux/2012-11/73443.htm
评:
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此。
打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候,重复启了两个quartz线程。
研究下来发现quartz确实会加载两次:
第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次。
第二次:Spring本身会加载applicationContext.xml一次。
而我的quartz配置就是写在applicationContext.xml文件里的。

解决办法很简单
先把quartz配置信息提取出来,单独存成一个文件,比如applicationContext-quartz.xml
然后修改web.xml,让web容器启动时,可以加载该文件

这样quartz只会在web容器启动时加载一次,Spring不会再加载了。

web.xml配置如下:
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/applicationContext-timertask.xml</param-value>
  </context-param>
  <!-- 开启监听 -->
  <listener>
      <listener-class>
          org.springframework.web.context.ContextLoaderListener
      </listener-class>
  </listener>

把定时器的配置单独写成一个配置文件,在web容器启动的时候只加载一次

这个问题在Spring的TimerTask定时器下也会出现,解决方法也是如此,希望对各位大侠有所帮助。
分享到:
评论

相关推荐

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

    综上所述,解决Spring Quartz在负载均衡环境下的重复执行问题,需要综合运用Quartz的集群特性、数据库Job Store、公平调度以及应用层面的设计策略。通过这些方法,可以确保在多服务器环境中,定时任务的执行有序且...

    spring java 定时器 执行两次 quartz

    当我们遇到Spring定时器执行两次或者更多次的问题时,这通常是由于配置不当或者多线程并发导致的。下面将详细介绍如何使用Spring集成Quartz,以及解决定时任务重复执行的问题。 首先,让我们了解Spring如何配置...

    Spring Quartz 定时器示例(Web工程版)

    Spring Quartz 定时器示例(Web工程版),欢迎下载。

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

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

    Spring Quartz定时器

    Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器 Spring Quartz定时器

    Spring Quartz定时器的jar包

    Spring Quartz定时器是Java开发中常用的一个任务调度框架,它结合了Spring框架的强大功能与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务。在这个压缩包中,包含了三个核心的jar文件:`quartz-all-...

    简单实现Spring Quartz定时器

    Spring Quartz定时器是一种在Java应用中实现定时任务的流行框架,它允许开发者精确地调度任务执行。本篇文章将深入探讨如何在Spring框架中简单实现Quartz定时器,并结合源码和工具来帮助理解其工作原理。 首先,让...

    spring quartz定时器的简单配置和使用

    ### Spring Quartz 定时器的简单配置与使用 在现代软件开发中,特别是Java领域,定时任务是非常常见的需求之一。Spring框架提供了强大的功能支持来帮助开发者实现这些需求,其中Spring Quartz是一个非常流行的解决...

    Spring Quartz 定时器示例(Java工程版)

    - 要在Quartz中执行的任务需要实现`org.quartz.Job`接口或继承`org.springframework.scheduling.quartz.JobDetailBean`。例如: ```java public class MyJob implements Job { @Override public void execute...

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

    通过以上步骤,你就可以在Spring MVC项目中使用Spring内置的定时器或Quartz来执行定时任务了。两者各有优劣,Spring内置定时器简单易用,适合轻量级的定时需求;而Quartz功能强大,适用于复杂的定时场景,但配置和...

    Spring-quartz实现定时器(含代码)

    本文将深入探讨如何使用Spring整合Quartz来实现定时器,并提供相关代码示例。 首先,理解Spring框架。Spring是一个开源的Java平台,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(DI)、面向切面编程...

    spring quartz定时器支持的jar包

    Quartz是一个开源的作业调度框架,能够用于创建、调度、执行和监控重复的作业。在Spring与Quartz结合使用时,通常需要引入几个关键的jar包来支持其功能。根据提供的信息,这里我们关注的是三个关键的jar包:`quartz-...

    spring boot集成quartz定时器

    本文将详细讲解如何在Spring Boot项目中集成Quartz定时器,以及如何利用Spring的依赖注入特性来实现Job。 一、集成Quartz定时器 1. 添加依赖:首先,你需要在Spring Boot项目的`pom.xml`或`build.gradle`文件中...

    定时器quartz的使用方法

    如果你想在服务启动时自动执行任务,并且之后按指定间隔重复,可以将上述代码整合到Spring Boot或任何其他Java应用的初始化逻辑中。配置文件如application.properties或application.yml可以用来设置触发间隔,例如:...

    SpringQuartz定时器的配置[参照].pdf

    Spring Quartz 是一个集成在Spring框架中的任务调度库,它允许开发者轻松地定义和管理定时任务。Quartz本身是一个功能强大的任务调度框架,而Spring通过提供一些便利的类和工具,进一步简化了在Spring环境中使用...

    使用spring的quartz定时器要用到的jar包

    首先,要使用Spring的Quartz定时器,你需要确保引入了以下核心的jar包: 1. `quartz.jar`:这是Quartz的核心库,包含了Quartz的调度器、作业、触发器等核心组件。 2. `spring-context-support.jar`:Spring框架提供...

    java Spring OpenSymphony的Quartz定时器的时间设置

    ### Java Spring 中 OpenSymphony 的 Quartz 定时器时间设置详解 #### 一、Spring定时器的两种实现方式概述 在Java Spring框架中,开发者有多种选择来实现定时任务的功能,其中最为流行的两种方式分别是使用Java...

    spring+quartz定时器

    Spring框架与Quartz库的结合为Java开发者提供了一个强大且灵活的定时任务解决方案。让我们深入探讨一下这个"spring2.0+quartz1.6定时器"的工作原理和实现细节。 首先,Spring框架是一个广泛应用的开源Java框架,它...

    SpringQuartz定时器的配置[归类].pdf

    Spring Quartz 是一个集成Quartz定时任务框架的Spring模块,它为开发者提供了在Spring环境中便捷配置和管理定时任务的能力。Quartz作为一个强大且功能丰富的任务调度框架,能够灵活地定义任务的执行时间表,并且可以...

    quartz定时器源码jar包下载

    4. **CalendarIntervalTrigger**:此Trigger用于按日历间隔进行触发,比如每工作日执行一次。 5. **CRONTrigger**:基于CRON表达式的Trigger,允许开发者以类似Linux CRON的方式定义任务执行的时间。 **源码学习...

Global site tag (gtag.js) - Google Analytics