Spring项目加载在Tomcat启动时加载了两次

今天开发项目的时候,发现tomcat加载了两次项目。
先交代一下开发环境:
eclipse
tomcat 7
首先排查了spring的配置文件和web.xml文件是否加载了两次Spring的容器,但是并没有发现问题。随后感觉像是tomcat的问题。
随后在网上找到了问题所在
问题原因 :
虚拟目录引起的问题,我们在Host标签里配置了appBase=”webapps”,tomcat加载一次应用。这里配置了一次docBase,tomcat又去加载一次应用。

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


        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->


        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>

      <Context docBase="backend" path="/cf-hrtop" reloadable="true" source="org.eclipse.jst.jee.server:backend"/></Host>

解决办法:
开发项目的时候难免就会出现项目名字和项目访问的路径不一样的情况。
eclipse的修改方式是:

但是这样修改的话eclipse会自动吧tomcat的server.xml改成上边xml中的样式。
如果用eclipse重新部署的话还会出现这个问题。但是如果每次自己手动改server.xml文件的话有很麻烦。感觉像是eclipse的一个bug。
其实不然,eclipse的开发者应该早就想到这个问题了,在我们第一次配置tomcat的时候,eclipse给出的配置是这样的
这里写图片描述
默认的部署路径并不是webapps而是wtpwebapps这个路径,
而且eclipse在启动tomcat的时候会指定一个参数
-Dwtp.deploy=D:\dev_workspace\webserver\tomcat\apache-tomcat-7.0.82-top-hr\wtpwebapps
上边这个命令的意思就是将tomcat的部署路径指定到wtpwebapp这个目录下,也就是eclipse给tomcat的默认的部署路径,这个就是eclipse的解决方式。


我还是更喜欢idea开发工具的解决方式,直接吧部署到webapps下的项目文件夹名字改掉了想要的项目访问目录的名字,这样更简单,更有效。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值