解决:Tomcat运行项目时Quartz定时任务执行两次
原因
在Tomcat的配置文件conf/server.xml
中:
1 | <Host name="localhost" appBase="webapps" |
其中<Host>告诉Tomcat,在启动的时候加载webapps下的所有项目工程文件,<Context>又让Tomcat再加载了一遍(一般情况下配置<Context>,主要是由于想域名访问时将工程名去掉的原因配置),这种情况下会导致工程中的quartz定时被两次触发,执行两次
解决办法
将Tomcat的配置文件conf/server.xml修改为:
1 | <Host name="localhost" appBase="webapps" |
autoDeploy:是否允许自动部署,默认值是true,即表示 Tomcat 会自动检测appBase目录下面的文件变化从而自动应用到正在运行的 Web 应用程序
deployOnStartup=”false”,表示Tomcat服务器启动时, 不会自动发布appBase目录下所有的Web应用
会出现的问题
但是这样虽然解决了Quartz的执行两次的问题,但也存在另一个问题——无法解压war包。就是war包放到webapps目录下,不会自动解压生成项目文件夹,你所看到的项目文件夹是历史文件夹。所以,这是一个不断修改conf/server.xml的过程。当需要解压文件夹的时候,修改成true,解压完成后,改成false,记得重启Tomcat
PS.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeDao's Blog!
评论