tomcat项目部署两次问题

工作中遇到多个项目版本并行开发的问题,所以把下载的版本重新编辑项目名称导入eclipse,eg. Test、Test1.0.0、Test1.0.2等等。当时只是简单的把eclipse的.project的配置文件中的项目名称给修改了。导致在使用tomcat部署项目的时候会出现项目被启动两次的情况。

tomcat  server.xml配置:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
 <ContextdocBase="Test1.5.0"path="/Test"reloadable="true"source="org.eclipse.jst.jee.server:Test1.5.0"/></Host>

部署完成之后,context的属性docBase与path的值不一致,差了个版本号问题。这时在启动项目的时候,如果项目中创建Socket通信的监听端口,就会有报错信息,提示XXX端口好已经被绑定。其实这个时候该项目被部署了两次,导致启动报错。

解决方法:

1.最简单的修改方式就是把path的值改成docBase的值。

    此处可以修改项目的"Web project setting",在properties里面,修改这个参数为docBase的值就可以了。

2.只把项目部署在webapps下,不配置Context元素。

原因:

原因补充很清楚,但是查看了tomcat的官方文档:

path:

Even when statically defining a Context in server.xml, this attribute must not be set unless either the docBase is not located under the Host's appBase or both deployOnStartup and autoDeploy are false. If this rule is not followed, double deployment is likely to result.

假如docBase的目录已经在appBase配置的目录下,或者deployOnStartup与autoDeploy都为false,就不需要配置path属性。如果配置了,就极有可能导致双重部署的结果。

找到了原因还是很开心的,但是不知道tomcat启动原理还是硬伤!路还很长......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值