一、问题描述
  项目中通过配置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>

  

TOMCAT加载两次war包(重复加载)的更多相关文章

  1. Tomcat增加Context配置不带项目名访问导致启动的时候项目加载两次

    eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/.现在需要改成这样访问http://localhost.修 ...

  2. 在eclipse中启动tomcat加载不了项目的解决方法

    一.在server视图右键选择Add and Remove时,如果想要部署的项目不在左侧的待选列表中,或是弹出警告There are no resources that can be added or ...

  3. EasyUI使用tree方法生成树形结构加载两次的问题

    html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求 ...

  4. 【实战问题】【1】@PostConstruct 服务启动后加载两次的问题

    @PostConstruct:在服务启动时触发操作(我是用来更新微信的access_token) 解决方法: tomcat文件夹→conf→server.xml→将appBase="weba ...

  5. 一劳永逸部署项目:通过tomcat加载环境变量

    一劳永逸部署项目:通过tomcat加载环境变量 转载自:https://blog.csdn.net/u010414666/article/details/46499953 一.说明 项目中经常会用到x ...

  6. 修改类不用重启Tomcat加载整个项目

    可以修改类不用重启Tomcat加载整个项目(手工启动) 配置reloadable=true(自动重载) 使用Debug模式,前提是仅限于局部修改.(修改类不用重启--热加载) Tomcat轻小,而We ...

  7. Tomcat加载JSP原理

    Tomcat加载JSP主要有以下几个类: JspServlet JspServletWrapper JspCompilationContext JspRuntimeContext JsperLoade ...

  8. 【转】Maven实战(五)---两个war包的调用

    原博文出自于: http://blog.csdn.net/liutengteng130/article/details/42879803    感谢! 开篇前提   1.为什么要用两个war包的调用? ...

  9. 未能正确加载“visual C++ package”包

    早上打开360要卸载软件,跳出说系统修复,习惯性的点击修复,结果修复后发现打开vs2012提示“未能正确加载“visual C++ package”包……..”, 重启也一样,google了下,是因为 ...

随机推荐

  1. 面相切面编程AOP以及在Unity中的实现

    一.AOP概念 AOP(Aspect-Oriented Programming,面向切面的编程),它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术.它是 ...

  2. AJPFX区分this和super

    this和super的区别No.区别thissuper1操作属性this.属性:表示调用本类中的属性,如果本类中的属性不存在,则从父类查找super.属性:表示调用父类中的属性2操作方法this.方法 ...

  3. ESSENTIALS OF PROGRAMMING LANGUAGES (THIRD EDITION) :编程语言的本质 —— (一)

    # Foreword> # 序 This book brings you face-to-face with the most fundamental idea in computer prog ...

  4. Node.js——网站访问一般流程

  5. ActiveSync日志分析

    Here are the steps to exporting the ActiveSync log data: Create a folder on the root      of C:\     ...

  6. MySQL基础、索引、查询优化等考察点

    MySQL基础 MySQL数据类型 整数类型 TINYINT. SMALLINT. MEDIUMINT. INT. BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,例如:INT(1 ...

  7. IT实习总结-上海的实习的日子

    在上海实习两个多月,从找工作,到面试,最后到创业公司工作,体会了一个人在外工作的那种工作时的压力与双休时的寂寞,有时甚至有点迷惘,可能这就是生活,每个人都会经历,在经历的过程中会有不同的味道. 说说我 ...

  8. jquery 移动端 六位密码输入

    <!DOCTYPE html> <html> <head> <script src="scripts/jquery-1.7.1.min.js&quo ...

  9. IDEA常见问题

    IDEA常见问提解决 一:拉取git代码认证失败(无法重新输入账户和密码) git config --system --unset credential.helper   二:取消新建文件自动添加到S ...

  10. 10CSS高级滤镜

    CSS高级滤镜 滤镜特效的应用    filter:滤镜属性(参数1,参数2,……) filter是滤镜属性选择符. 透明度——alpha opacity代表透明度等级,参数值从0到100,从完全透明 ...