这两天发现部署到tomcat中的quartz定时任务静态变量被初始化了两次,在网上查了一下发现,在tomcat服务器下,quartz不仅会把静态变量初始化两次,而且quartz会执行两次,导致该问题的原因是你的tomcat的conf目录中的server.xml有如下配置
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"> <Context docBase="ims_plat_new" path="/bap" reloadable="true" source="org.eclipse.jst.jee.server:ims_plat_new"/> </Host>
其中第一行告诉tomcat,在启动的时候加载webapps下的所有项目工程文件,第二行又让tomcat再加载了一遍(一般情况下配置第二行,主要是由于想域名访问时将工程名去掉的原因配置),这种情况下会导致工程中的quartz定时被两次触发,执行两次。
因此修改方法如下
<Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false" deployOnStartup="false"> <Context docBase="ims_plat_new" path="/bap" reloadable="true" source="org.eclipse.jst.jee.server:ims_plat_new"/> </Host>
1. autodeploy属性值设置为false,如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用,设成false就不会。
2.增加deployOnStartup="false",表示Tomcat服务器启动时, 不会自动发布appBase目录下所有的Web应用。
这样的话,在tomcat启动时,不会自动发布appBase下的应用,启动后也不会自动发步appBase下的应用。
下面附上两个链接,分别是tomcat 中server.xml的说明:
http://blog.csdn.net/dangerye/article/details/7297185
http://www.cnblogs.com/gugnv/archive/2012/02/01/2334187.html
相关推荐
2. **数据库存储问题**:Quartz 使用数据库存储 Job 和 Trigger 的信息,如果数据库中的记录不正确或被重复插入,可能导致任务被触发两次。 3. **集群环境下的并发问题**:在多服务器的集群环境中,如果未正确配置 ...
### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...
然而,除了作为Web服务器的角色,Tomcat还可以被用来执行定时任务,这对于需要定期执行某些操作的应用场景非常有用。本篇文章将深入探讨如何在Tomcat中设置定时作业,并为初学者提供指导。 首先,我们要了解Tomcat...
【Quartz框架详解】 ...无论是简单的一次性任务,还是基于时间周期的重复任务,Quartz都能提供强大的支持。在实际项目中,可以根据需要结合Quartz提供的API和特性进行扩展,以实现更复杂的调度场景。
有多种类型的触发器,如SimpleTrigger(一次性触发)、CronTrigger(基于CRON表达式触发)等。在SpringBoot中,我们可以通过配置类或YAML文件定义触发器。 3. **调度器(Scheduler)**:调度器是Quartz的核心,负责...
项目简介: 主要解决两库的两个表数据迁移和同步...2.应用quartz对job进行定时触发(目前设置的定时为每隔一分钟执行一次,目前定时服务已注释掉) 3.除了定时触发功能,还可以通过项目的index.jsp页面发起批处理job
它基于Quartz Scheduler实现,可以配置CRON表达式定义任务执行的时间规则,并支持任务的分组、触发状态、日志查看等管理功能。 2. **执行器(XXL-JOB-EXECUTOR)**:执行器是实际执行任务的模块,每个执行器都可以...
执行顺序是:beforeClass(类前置,只执行一次)、before(每个测试方法前执行)、测试方法、after(每个测试方法后执行)、afterClass(类后置,只执行一次)。 2. **分布式锁**:分布式锁是在分布式系统中用于...