zoukankan      html  css  js  c++  java
  • Tomcat配置错误导致Quartz执行两次问题

    以下基于tomcat服务器

    我们通常将域名映射到指定服务器的端口上,以通过域名直接访问服务,如http://www.abc.com域名已绑定到本机的80端口,项目名wechat,则直接访问http://www.abc.com和访问http://localhost:80/wechat的效果是一样的,面向用户的话非常推荐前者,因为用户通常不关注你的端口和项目名称这些东西,况且他们也不知道。这种配置只需要在tomcat的配置文件server.xml中的<Host>标签中加一项配置<Context docBase="wechat" path="" reloadable="false"/>即可,其中docBase可为基于<Host>的appBase
    属性的相对路径,也可填写绝对路径。这样启动服务即可不带项目名称访问服务。以下是我在项目中的配置

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
       <Context docBase="wechat" path="" reloadable="false"/> </Host>

    但是本人最近遇到了一些问题,这样配置之后,启动服务,总是发现Quartz执行了两次,仔细观察发现webapps目录下除了解压出的wechat文件夹之外,还有一个ROOT文件夹,内容与wechat文件夹一样。查资料都说是tomcat配置有问题,

    <Host>的autoDeploy="true"会部署一次服务,<Context docBase="wechat" path="" reloadable="false"/>又会部署一次,导致tomcat容器两次加载项目,tomcat容器存在两个bean,每个bean都去执行定时任务,所以造成任务重复执行问题,

    于是将<Host>(<Context>不变)标签的配置修改为

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="false" deployOnStartup="false">
    

     autoDeploy设为false,新增deployOnStartup="false"属性(注意大小写哦,区分大小写的,本人的编辑模式插入的代码区是有大小写区分的,貌似浏览模式看到的都是小写,怕写错的话可以去官方文档查看http://tomcat.apache.org/tomcat-5.5-doc/config/host.html),<Host>不自动部署且启动时也不部署,<Context>部署一次,Quartz任务不会出现重复执行的问题。

  • 相关阅读:
    js在当前时间上加分钟数得到新的时间
    (转)@Autowired(required=false)注入注意的问题
    Java代替if和switch的方法(记录一下)
    windows下RocketMQ的安装部署
    RocketMQ在windows环境下的安装(转)
    简单说下二维数组
    JAVA-单例模式的几种实现方式
    (转)mybatis一级缓存二级缓存
    MySql安装后在服务管理器里边找不到MySql服务项的解决办法(win10)
    JAVA字符串的替换replace、replaceAll、replaceFirst的区别解析。
  • 原文地址:https://www.cnblogs.com/xiao-tao/p/6024344.html
Copyright © 2011-2022 走看看