Tomcat ROOT 目录问题

  1. 部署环境:
  2. 应用架构
  3. 场景还原:
  4. 问题描述:
  5. 解决方案:

来自: Tomcat中的应用无缘无故启动两次及生成ROOT目录问题详解

部署环境:

centOS+nginx+tomcat8集群

应用架构

springboot +springcloud

场景还原:

将本地项目打war包扔到tomcat8的webapps目录下,如图所示:

修改tomcat的conf文件夹下的server.xml ,使之能够通过”/”目录进行访问,如图所示:添加Context 标签,并制定docBase为自己的应用包名:

并到 /bin下执行./startup.sh,启动tomcat

问题描述:

启动tomcat后会在webapps目录的ROOT目录下生成一个和ccx-axis-1.0-SNAPSHOT相同的一个目录,如图所示:
两个文件夹中的内容是完全相同的,而且在启动tomcat后,此应用会启动两次,第一次能正常启动,第二次启动则会产生端口号本站用等错误,具体请看日志:
第一次启动:

第二次启动:

解决方案:

网上百度了一些解决方案,都没有说ROOT目录如何删除掉或者为什么会启动两次的问题,后来了解到,如果tomcat的server.xml文件中的docbase的地址为一个war包时候,如docBase=”C:/apache-tomcat-6.0.32/myapps/bc.war”,那么tomcat会解压war包到ROOT目录下,如果docBase的地址为一个解压好的目录时,tomcat就不会再解压war包,所以就不会有ROOT目录了,
我的server.xml配置的完全没有问题,也没有指向war包,为啥也不行呢,我先把war包删除试一下:
结果:不会生成ROOT目录,可是tomcat里面的应用仍然会启动两次(注意,不是tomcat启动两次,是部署在tomcat里的应用会启动两次,就相当于有两个解压好的war包仍在tomcat的webapps里,且这俩包都是一样的);
在原来的基础上做第二次尝试:修改conf路径下的server.xml文件的appBase目录,将appBase的指向目录由webapps修改为空,并重启tomcat,则完美解决问题!!!具体如图:


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 yionr99@gmail.com