这两天发现部署到tomcat中的quartz定时任务每回都被执行了两次,但是在myeclipse执行时又不会,后来搜了网上,才发现该问题只发生于部署在tomcat服务器上,由tomcat的自启动导致。
导致该问题的原因是你的tomcat的conf目录中的server.xml有如下配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="C:\Program Files\Tomcat 6.0\webapps\XXX\" workDir="C:\Program Files\Tomcat 6.0\webapps\XXX\" />
其中第一行告诉tomcat,在启动的时候加载webapps下的所有项目工程文件,第二行又让tomcat再加载了一遍(一般情况下配置第二行,主要是由于想域名访问时将工程名去掉的原因配置),这种情况下会导致工程中的quartz定时被两次触发,执行两边。
因此修改方法如下
<Host name="localhost" appBase=""
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="C:\Program Files\Tomcat 6.0\webapps\XXX\" workDir="C:\Program Files\Tomcat 6.0\webapps\XXX5xun5mi\" />
将第一行中的appbase中的值去除,且autodeploy属性值设置为false,因此该行不会导致任何工程项目的加载。
分享到:
相关推荐
### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...
2. **数据库存储问题**:Quartz 使用数据库存储 Job 和 Trigger 的信息,如果数据库中的记录不正确或被重复插入,可能导致任务被触发两次。 3. **集群环境下的并发问题**:在多服务器的集群环境中,如果未正确配置 ...
2. **配置错误**:Spring配置中的`@Scheduled`注解或Quartz配置可能设置了错误的触发策略,使得任务被重复触发。 3. **线程安全**:如果你的任务逻辑不是线程安全的,可能会因为并发执行导致问题。 4. **Spring重启*...
在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...
Quartz提供了多种类型的触发器,如SimpleTrigger(一次性执行或按固定间隔重复执行)、CronTrigger(基于cron表达式的时间触发)等。例如,CronTrigger允许你用类似"0 0 12 * * ?"的格式定义触发时间,这表示每天的...
Spring + quartz 定时任务修改定时时间不重启服务
Quartz是一个开源的作业调度框架,它允许开发者在应用程序中定义和执行定时任务。这个标题“Quartz 定时WebForm和WinForm使用的dll”暗示了我们将在WebForm和WinForm应用中使用Quartz来实现定时功能。在.NET环境中,...
Java Quartz 是一个强大的开源任务调度库,用于在Java应用程序中创建和管理定时任务。Quartz 提供了丰富的API,使得开发者能够灵活地定义任务,并精确控制任务的执行时间。本项目利用Quartz 实现了基于Cron表达式的...
Quartz是一个开源的作业调度框架,能够触发在指定时间运行的任务,广泛应用于Java应用程序中进行定时任务的管理。Quartz的核心是Cron表达式,它允许开发者以一种灵活且可读性高的方式定义任务的执行时间。 #### ...
Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”、“每天22点执行”、“每月18日的下午执行8次”等各种定时任务。 Quartz.Net中的概念:计划者...
Tomcat自动加载是关键,因为我们需要确保Quartz能在Tomcat服务器启动时正确初始化,并且在运行过程中能够响应XML配置文件的变更。在Tomcat中,我们可以使用ContextListener来监听应用的上下文初始化和销毁事件。在上...
Quartz 是一个开源的作业调度框架,常用于Java应用程序中实现定时任务的管理。它提供了丰富的API和功能,使得开发者可以灵活地定义和控制任务的执行。本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的...
在Java Web应用中,特别是在Tomcat这样的应用服务器中,Quartz能够帮助我们实现后台任务的自动化执行,比如定期数据备份、清理缓存等。这篇博客将探讨如何在Tomcat环境下配置和使用Quartz。 首先,我们需要理解...
在Spring Boot应用中整合Quartz定时任务是一种常见的需求,它可以帮助我们执行周期性的后台任务,如数据同步、报表生成等。Spring Boot与Quartz的结合提供了便捷的配置方式,特别是通过YAML(YAML Ain't Markup ...
【Quartz定时任务】是Java领域的一个强大任务调度框架,但在C#中也有相应的实现,如标题所示,这里讨论的是C#控制台应用中使用Quartz.NET进行定时任务的实现。Quartz.NET允许开发者在应用程序中安排任务在特定时间...
Quartz提供了多种Trigger类型,如SimpleTrigger(单次触发)和CronTrigger(基于cron表达式的时间触发)。在这个简单的定时任务中,可能使用的是SimpleTrigger,设置每隔3秒执行一次。 4. Calendar:日历对象可以...
4. **部署与测试**:项目部署在Tomcat服务器上,当服务器启动时,Quartz会自动加载数据库中的定时任务。通过监控日志或者定制的监控界面,可以观察到定时任务的执行情况,验证其是否按照预期工作。 5. **Spring的...
【C# Quartz定时任务】是基于C#编程语言实现的一种定时任务框架,它允许开发者在.NET环境中创建和管理定时任务。这个项目是在Visual Studio 2010开发环境下编写的,提供了一个可以直接运行的示例(demo),方便快速...
标题中的“spring定时器启动两次原因及解决”指的是在Spring框架中使用了定时任务功能,如Spring Boot的`@Scheduled`注解或者Spring Task模块,但遇到了定时任务被触发执行了两次的问题。这种情况可能是由于配置不当...
在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...