tomcat部署war,启动访问不到工程,需要启动两次(<Context path=""..../>)

4 篇文章 0 订阅
2 篇文章 0 订阅

问题:

1.打包好的web服务

2.部署在tomcat的webapps路径(<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">)

3.配置server.xml,<context path="" docBase="xxxx" reloadable="true"/>

4.启动tomcat

是否直接通过localhost/index.jsp访问到的是tomcat的管理界面?无法访问到工程?

其实,这个时候带上工程名是可以访问到的。(即通过localhost/xxxx/index.jsp就可以访问)

原因:

这个与tomcat的加载顺序有关系,第一次启动需要将war解压,但是在解压之前已经处理过server.xml了,server.xml在这个时候并没有找到xxxx工程。于是开始解压,普通情况,在webapps下的工程解压后都可以通过工程名访问的,这个war也是。只有在第二次及以后启动tomcat,server.xml才能找到xxxx工程,才可以通过localhost直接访问。

解决方案:

A.部署工程的时候,即将war包解压好。或者说直接发布解压后的包,不通过tomcat解压war包。

B.第一次部署war包的时候需要启动两次tomcat。这个方案可以解决,但是比方采用spring框架,那么applicationContext.xml配置文件会加载两次。

C.通过nginx代理,不去配置无需工程名的context。也可以达到不需要工程名即可访问工程的效果。这个方案有风险,因为开发环境的设计是没有工程名后缀的,那么工程里边,很多页面的跳转就已经被设计成为了不带工程名后缀的,如果这个时候加上,有些页面会存在找不到的风险。

D.可以将工程放在非webapps的目录下,然后在context标签的path属性配置war包的路径。也就是将war包放在Host.appBase指定的路径之外的地方就可以了。这个方案在tomcat解压后,会在webapps(Host标签的属性appBase)下,生成ROOT文件夹,即是解压后的包。优选这个方案。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值