zoukankan      html  css  js  c++  java
  • TOMCAT加载两次war包(重复加载)

    一、问题描述
      项目中通过配置Context节点docBase,使docBase指向项目的绝对路径,可以直接通过IP加端口访问,今日发现意外bug,项目中某个功能奇数次执行成功,偶数次执行失败。
    二、问题排查
      这种现象应该是两次使用的为不同的对象,通过debug确认问题。但是本来是单例模式实现的实例,调用的时候却不是同一个实例,经过排查发现是Tomcat加载war包两次导致的。
    三、解决办法
      修改Tomcat的/conf/server.xml文件
      1、将Host标签中的appBase置为空,在webapps同级目录创建app目录,将war放入,Context的docBase指向这个绝对路径,注意别放在webapps下,如下配置:

          <Host name="localhost"  appBase=""
                unpackWARs="true" autoDeploy="true">
    	     <!-- 这里我的war包是web.war -->		
    	    <Context docBase="/home/opt/apache-tomcat-8.0.35-web/app/web" path="" reloadable="true"></Context>
    		
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t "%r" %s %b" />
    	  
          </Host>
    

      2、在HOST标签中deployIgnore=".*web.*",其他不做修改。

    <HOST deployIgnore=".*web.*">
     <Context docBase="/home/opt/apache-tomcat-8.0.35-web/webapps/web" path="" reloadable="true"></Context>
    

      

  • 相关阅读:
    进程同步
    CPU调度
    线程的引入
    进程互斥
    处理器状态
    操作系统
    进程的基本概念
    socket应用
    html笔记
    HTTP基本链接原理
  • 原文地址:https://www.cnblogs.com/monkjavaer/p/10290410.html
Copyright © 2011-2022 走看看