`
Franciswmf
  • 浏览: 800156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

关于spring定时器一次调用却触发了两次trigger的问题分析

 
阅读更多
关于spring定时器一次调用却触发了两次trigger的问题分析
   定在一个时间点触发一个方法,但是这个方法却被调用了两次.仔细检查了程序,没有多次触发,没有启动多个tomcat,没有检查出什么问题.后来在网上看到了高手的一个帖子发现原来原因是这样的:
   是TOMCAT的配置文件server.xml配置不当引起的,请看下面这段配置就是错误的:

[html]
<Host name="www.***.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> 
<Context path="" docBase="/tomcat/webapps/***" debug="1" /> 
<Context path="/***2" docBase="/tomcat/webapps/***2" debug="1" /> 
</Host> 

  正确的配置如下:
[html]
<Host name="www.***.com" debug="0" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> 
<Context path="" docBase="/tomcat/webapps/***" debug="1" /> 
<Context path="/***2" docBase="/tomcat/webapps/***2" debug="1" /> 
</Host> 

这两段的区别是第二段去除了appBase="webapps"中的webapps变成了appBase="",因为web应用程序都是放在webapps这个目录下的,如果不把“webapps“去掉,这里会调用一次quartz的任务调度,在接下来的“<Context path”中又会调用一次quartz的任务调度,所以就重复了2次

这种情况一般都是编译器自动添加路径造成的,比如用eclipse编译,发布程序.或者人为的添加项目路径,好好检查tomcat配置就不会再出现这种问题了.
分享到:
评论

相关推荐

    spring java 定时器 执行两次 quartz

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

    spring定时器/触发器的小实例

    Spring定时器和触发器是Java应用中用于执行定时任务的关键组件。它们允许开发者安排任务在特定时间或周期性地执行,极大地增强了应用的自动化能力。在这个小实例中,我们将探讨如何使用Spring框架的`TaskScheduler`...

    spring定时器

    2. **编写任务类**:创建一个包含具体业务逻辑的类,该类将被Spring定时器调用。 3. **配置Spring定时器**:在Spring配置文件中定义任务、触发器以及调度器。 ##### 4.2 定时任务示例 下面是一个具体的示例,展示...

    spring 定时器

    Spring定时器主要支持两种方式来实现定时任务:基于注解的方式和基于Quartz集成的方式。 #### 二、Spring定时器的实现原理 ##### 2.1 基于注解的定时任务 Spring 3.0引入了`@Scheduled`注解,它可以直接添加到...

    spring动态定时器封装

    总结起来,Spring动态定时器封装涉及Spring的定时任务支持、Quartz的使用,以及源码分析等多个方面。通过合理的封装,我们可以灵活地管理和控制系统的定时任务,提升系统的可维护性和扩展性。在实际开发中,理解并...

    Spring定时器

    Spring定时器,也被称为Spring的定时任务管理,是Spring框架的一部分,它允许开发者在特定时间间隔内执行预定的任务。在Spring中,定时任务通常通过集成Quartz库来实现,Quartz是一个开源的作业调度框架,可以用来...

    springMvc定时器执行两次

    标题“springMvc定时器执行两次”涉及到的是Spring MVC与Quartz定时任务的集成问题,其中可能存在配置或逻辑上的错误导致定时任务被触发了两次。在Spring MVC应用中,Quartz是一个常用的库,用于实现定时任务的调度...

    定时器quartz的使用方法

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

    脱离spring的quartz声明式定时器(jar包齐全)

    "`是cron表达式,表示每5分钟执行一次。 4. **调度作业**: 创建好Job和Trigger后,我们需要将它们关联并启动调度器。 ```java scheduler.scheduleJob(job, trigger); scheduler.start(); ``` 5. **实现Job类*...

    spring 定时器 quartz

    每小时,`SampleTask`的`run`方法会被调用一次,执行相关业务逻辑。在这个例子中,`SampleTask`尝试获取用户列表和团队信息,但具体逻辑未完全展示。 虽然示例使用的是Spring的`Timer`,但在实际生产环境中,Quartz...

    javaweb定时器

    - 创建一个Trigger,设置触发时间规则,如每隔三秒执行一次。 - 使用Scheduler实例将Job和Trigger关联起来,然后调用`start()`方法启动调度器。 4. **运行时控制**: - 可以在运行时暂停、恢复、删除Job或...

    Spring配置定时器

    当触发器触发时,Spring会根据配置找到相应的`JobDetail`,并调用`execute()`方法执行任务。在这个方法中,你可以实现自己的业务逻辑。 总之,Spring通过Quartz提供的强大功能,使得在应用中实现定时任务变得简单...

    Quartz spring定时器

    Quartz是一款由OpenSymphony组织提供的开源作业调度框架,它提供了强大的触发机制用于定义作业何时运行,并且可以将作业绑定到Spring容器中的bean,这意味着开发者可以在作业执行过程中调用Spring管理的组件,实现...

    spring定时调用以及设定时间调用包括jar和源码

    Spring提供了一套完整的定时任务解决方案,其中包括基于`java.util.Timer`的简单定时器,但更为常用的是Spring的`TaskScheduler`和集成Quartz的`SchedulerFactoryBean`。本文将详细探讨Spring的定时任务机制以及...

    spring定时任务配置详解.doc

    首先,Spring提供了两种定时任务的实现方式:`Spring Task` 和 `Quartz Scheduler`。在本例中,我们看到的是使用Quartz Scheduler的例子,这是一个功能强大的、开源的、可高度定制的定时任务框架,可以精确控制任务...

    Spring Quartz 定时器

    这篇博客“Spring Quartz 定时器”很可能是探讨如何将Quartz集成到Spring应用中,以便利用其强大的定时任务功能。 首先,我们来看一下Spring与Quartz的结合。Spring通过`org.springframework.scheduling.quartz`包...

    quartzDaoImp.rar_quartz_spring定时_定时器

    本项目"quartzDaoImp.rar_quartz_spring定时_定时器"提供了一段基于Spring集成Quartz实现定时任务的代码示例,可供学习和交流。 首先,了解Quartz的基本概念。Quartz允许开发者定义“作业”(Job)和“触发器”...

    使用Spring自带轻量级jar包动态修改定时任务

    Spring Task提供了两个主要的接口:`org.springframework.scheduling.TaskExecutor` 和 `org.springframework.scheduling.Trigger`。`TaskExecutor`用于异步执行任务,而`Trigger`则定义了任务执行的触发策略。然而...

Global site tag (gtag.js) - Google Analytics