Tomcat启动项目时启动两次

Tomcat启动项目时启动两次

问题描述:

  • Tomcat启动项目时,会二次启动,打印两遍启动日志,而且会执行两次启动方法。

问题原因

  • 多数项目为了设置浏览器访问地址不需要携带项目地址,会对Tomcat进行一定的配置。
  • Tomcat的server配置文件存在问题,Tomcat会扫描到两次项目,造成重复启动。

问题分析

  • 打开./Tomcat/conf/server.xml配置文件
  • 找到Host配置标签
    <!-- 这是错误的的配置  -->
    <Host name="localhost" appBase="web" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    	<Context path="" docBase="./tomcat/web" reloadable="false" allowLinking="true"></Context>
    </Host>
    
  • Host标签的appBase属性表示Tomcat启动时加载web目录下的资源,Tomcat启动后,可以直接访问内部资源。比如存在文件./tomcat/web/app.apk,Tomcat启动后,可以直接通过http://ip:host/app.apk访问该文件
  • Host标签内的Context标签的docBase属性表示Tomcat启动时加载目录下的项目,并作为默认项目,Tomcat启动后访问该项目不需要携带项目名称。比如此项目可以直接访问http://ip:host,不需要访问http://ip:host/web
  • 配置的错误点:
    • Tomcat启动时根据Host标签的appBase属性,加载./tomcat/web下的资源,扫描到了项目,此时项目第一次启动。
    • 之后Tomcat根据Host内的Context标签的docBase属性,又重新加载了./tomcat/web下的项目,此时项目第二次启动。

问题解决

  • 将Host标签的appBase和Context的docBase设置为不同的路径。
    <!-- 这是正确的的配置  -->
    <Host name="localhost" appBase="resource" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    	<Context path="" docBase="./tomcat/web" reloadable="false" allowLinking="true"></Context>
    </Host>
    
  • 这样./tomcat下的resource和web目录互不影响。
  • 可以直接设置appBase为""。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值