spring集成quartz,出现2次重复调用的问题

来源:互联网 发布:如何将程序导入单片机 编辑:程序博客网 时间:2024/05/01 22:37

问题分两种情况:

1:把工程发布到tomcat的webapps目录下:

这样执行定时任务是没有问题的。我们也不用更改tomcat的配置。我找了几个tomcat,发现appBase="webapps"是tomcat的默认配置。我们在本地测试时发现定时任务只会执行一次。而且对多个定时进行监控,一切正常。所以,如果此种情况,那么,恭喜你,你不要改配置文件。

2:在tomcat的conf/Catalina/localhost目录下放置配置文件,把配置文件指向tomcat的外部工程。

这样就会出现调用两次定时任务的情况,是TOMCAT的配置文件server.xml配置不当引起的。

 

请看下面这段配置就是错误的

<Host name="www.***.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<LoggerclassName="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>


正确的配置如下

<Host name="www.***.com" debug="0" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<LoggerclassName="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的任务调度,在接下来的“<Contextpath”中又会调用一次quartz的任务调度,所以就重复了2次

原创粉丝点击