tomcat自定义项目访问路径,不使用项目名,而是使用根路径的方法

  • Post author:
  • Post category:其他


1,tomcat应用部署时,可以通过在server.xml里配置,也可以在$CATALINA_HOME\conf\Catalina\localhost中添加一个xml文件,用来自定义应用部署。

这种部署可以指定应用访问路径。

经过测试,发现有以下几种情况

1,server.xml里如下配置

<Context path=”/abc” reloadable=”false” docBase=”/tomcat/apache-tomcat-8.0.50/webapps/ocdc.war” workDir=”/tomcat/apps/work”>

</Context>

path表示访问的url路径,docBase指定war包的路径。启动后,发现path生效,http://127.0.0.1:8080/abc已经是程序页面。

webapps下增加了一个ocdc目录,一个abc目录,这说明ocdc.war部署了两次。

2,server.xml里如下配置

<Context path=”” reloadable=”false” docBase=”/tomcat/apache-tomcat-8.0.50/webapps/ocdc.war” workDir=”/tomcat/apps/work”>

</Context>

path为空,docBase指定war包的路径。

启动后,发现path没有生效,访问http://127.0.0.1:8080/显示的是tomcat的欢迎页面。

3,server.xml里如下配置

<Context path=”” reloadable=”false” docBase=”/tomcat/apache-tomcat-8.0.50/webapps/ocdc” workDir=”/tomcat/apps/work”>

</Context>

把webapps下的war包删除,ocdc目录保留,发现没有war包,ocdc路径也自动删除了。

测试时发现Tomcat会定时扫描webapps目录,如果没有对应的war包就会删除项目目录。如果想要不把war包放到目录下,则可以在tomcat停止时把ocdc.war包移出webapps目录,这样ocdc目录不会被删除。如果有war包,则会自动部署项目。

在webapps/ocdc目录不存在的情况下,context配置了这个目录,则tomcat都无法启动,而不只是应用不能启动。

4,server.xml里如下配置

<Context path=”” reloadable=”false” docBase=”/tomcat/apache-tomcat-8.0.50/webapps/ocdc” workDir=”/tomcat/apps/work”>

</Context>

webapps/ocdc目录存在,启动tomcat后,path生效,访问http://127.0.0.1:8080/显示的是应用页面。

5,尝试删除ROOT和ocdc目录,

<Context path=”” reloadable=”false” docBase=”/tomcat/apache-tomcat-8.0.50/webapps/ocdc.war” workDir=”/tomcat/apps/work”>

启动tomcat后,





http://197.1.25.30:8080/访问的是应用的页面。



但是查看webapps目录,发现ROOT文件夹和ocdc文件夹里面的内容一样

怀疑是删除了ROOT,又把应用的上下文根设置为/,这样会造成应用在ROOT目录下部署一遍。



结论:

应用部署,注册上下文根优先级:

Server.xml设置了context,且项目已经解压>ROOT应用>Server.xml设置了context,项目还是war包,还没有部署



如果想要让应用抢到ROOT的上下文根,则需要在server.xml里docBase指定的为已经解压的目录




,且设置path为空。



版权声明:本文为qq23ue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。