omct问题之-webapps下多出的ROOT目录

简介:

问题发生背景

    由于公司的web环境大都是tomcat,所以在项目发布出现小问题为了快速解决时常会需要手动增加或修改war包解压后的内容。但是在修改时有的webapps下除了war包解压后的包文件,还会多出一个ROOT文件夹,而且开发通常都会告诉我:别忘了修改ROOT里面的内容。

为什么呢,为什么还要修改ROOT下的内容?


下面先讲解tomcat下webapps中ROOT的作用


tomcat下webapps中ROOT目录的作用

    在初学tomcat时当部署完tomcat,我们输入IP:8080默认端口时通常会出现一个tomcat的欢迎界面,而这个欢迎界面就在webapps的ROOT中。

    一般tomcat的访问是"IP:端口/包名"形式的

    但ROOT的作用则是省去了包名使得访问tomcat的war包项目只需要"IP:端口"就可以,这可以简化反代的配置。不需要反向代理时写死包名,使得更换项目时不必再对反向代理进行修改。在一定程度上减少了运维人员的工作量。

    

ROOT目录是怎么出现的呢

    刚开始由于对tomcat一无所知,因此对ROOT的出现很是困惑,为什么每次发布前我都把ROOT删掉,在发布后ROOT总是再度出现。之前需要对发布后的项目进行小范围改动时,不知道为什么还要对ROOT进行修改。直到现在才明白对发布后的项目修改时为什么一定要修改ROOT

    ROOT的意义在前面已经说到了,它可以简化访问的url,同时在项目包名变更时不必对反向代理进行额外的修改。

    ROOT的出现与conf/server.xml配置文件有关

    在server.xml文件中有项额外的配置是

1
<Context path= ""  reloadable= "true"  docBase= "/deploy/to/war"  />

    docBase可以是war包的路径也可以是war包解压后的文件夹名的路径

    xxx.war形式

    <Context path="" reloadable="true" docBase="/opt/xxx.war" />

    例如xxx.war在/opt下,docBase可以写成docBase="/opt/xxx.war",此时启动tomcat,在engine的默认webapps下会生成一个名为ROOT的文件夹,该文件夹内就是xxx.war解压后的内容。

通过查看日志可以发现一则信息

1
DEBUG [localhost-startStop-1] - Published root WebApplicationContext as ServletContext attribute with name [org.springframework.web.context.WebApplicationContext.ROOT]

该信息大意:将ServletContext中的定义的包解压后的内容发布到ROOT文件夹下。

   xxx文件夹形式

    <Context path="" reloadable="true" docBase="xxx" />

    注:docBase有绝对路径跟相对路径之分,相对路径是相对于engine引擎定义的webapps

    如果docBase指定的路径为xxx.war包解压后文件夹的形式,则需要将xxx.war放在webapps下,其过程大致为:tomcat先将xxx.war解压为xxx文件,之后将xxx文件夹复制为以ROOT为名字的新文件夹


总结:

    tomcat访问IP:端口的方式访问war包项目的方式是比较方便的,我也建议这么做。不过发布时记得删除ROOT文件夹,否则在你发布后你会发现你这次发布的没有任何变化,若发布后出现小问题需要快速解决,记得是要对ROOT下的内容进行修改而不是解压的war包内容。

    现在我才知道开发通知告诉我的其实只有一半是正确的,那就是修改ROOT!。


我所写的不一定全对,不过经过实验验证,目前没发现错误,如果有哪里说的有误欢迎指正。










本文转自 紫色的茶碗 51CTO博客,原文链接:http://blog.51cto.com/chawan/1947201,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Linux
Linux部署06 ---相对路径绝对路径,想要切换到home下的文件 cd /home/itheima/Desktop cd Desktop,相对路径以当前目录为起点一种写法 不写/,相对是当前目录
Linux部署06 ---相对路径绝对路径,想要切换到home下的文件 cd /home/itheima/Desktop cd Desktop,相对路径以当前目录为起点一种写法 不写/,相对是当前目录
|
6月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux07特殊路径符,向上回退一级,cd ..切换目录到 /home/itheima,怎样做 .表示当前目录,cd ./Desktop,切换到当前目录的Desktop文件,cd ../... 退
Linux07特殊路径符,向上回退一级,cd ..切换目录到 /home/itheima,怎样做 .表示当前目录,cd ./Desktop,切换到当前目录的Desktop文件,cd ../... 退
Mardown中添加文章目录
Mardown中添加文章目录
131 0
Mardown中添加文章目录
|
安全 应用服务中间件 Apache
解决访问tomcat下文件夹(如temp)显示有权限【在tomcat目录下创建文件需要管理员权限】的问题
解决访问tomcat下文件夹(如temp)显示有权限【在tomcat目录下创建文件需要管理员权限】的问题
解决访问tomcat下文件夹(如temp)显示有权限【在tomcat目录下创建文件需要管理员权限】的问题
|
Java 容器 Spring
目录
记录Java的学习轨迹. 工程化专题 (一)Java工程化--Maven基础 (二)Java工程化--Maven实践 (三)Java工程化--Git起步 (四)Java工程化--Git基础 (五)Java工程化--Jenkins 设计模式 设计模式一: 单例模式(Singleton) 设计模式二: ...
1501 0
|
存储 Linux 自然语言处理
Confluence 6 修改 Home 目录的位置
当 Confluence 第一次启动的时候,Confluence 将会读取 confluence-init.properties 文件并从这个文件中确定如何去查找 Home 目录。
1207 0
|
存储 数据库 数据中心
Confluence 6 home 目录
Confluence Home 目录是存储 Confluence 信息,查找索引,页面附件的地方。其实 Home 目录也可以定义为数据目录。
1412 0
Confluence 6 Home 和其他重要的目录
Confluence 安装目录 Confluence 安装的目录(Confluence Installation directory)定义的是 Confluence 是在那里进行安装的。
943 0
|
存储 Linux 自然语言处理
Confluence 6 home 修改 Home 目录的位置
当 Confluence 第一次启动的时候,Confluence 将会读取 confluence-init.properties 文件并从这个文件中确定如何去查找 Home 目录。
1054 0

相关实验场景

更多