tomcat 配置文件 conf/server.xml 中的 appBase和docBase
前言
最近在 tomcat 配置和部署应用时,踩了一些坑,主要是关于在 ${CATALINA_HOME}/conf/server.xml
配置文件里的 Host 节点属性 appBase,及 Host 节点子节点 Context>的属性 docBase。
我是将项目打成 App1.war 包,然后把 war 包上传到 tomcat 的相关目录,启动部署。
部署方案
1. 默认配置,不修改 conf/server.xml 文件
把 war 包直接传到 ${CATALINA_HOME}/webapps/
目录,启动 tomcat 后,tomcat 会自动解压这个 webapps 目录下的 war,并且部署。
例如,把 App1.war 放到 webapps 目录后,tomcat 会将 App1.war 解压为 webapps/App1 目录,然后部署。
这是默认配置,没新增 Context 子节点,让 tomcat 来解压 war 包,非常方便。
2. 修改 conf/server.xml 文件,新增 Context 节点,并设置 docBase=“App1”(错误示例)
把 App1.war 包传到 ${CATALINA_HOME}/webapps/
目录, 并修改 conf/server.xml 文件,增加 Context 节点,并指定 Context 节点属性 docBase=“App1”
。
由方案1可知,App1.war 会自动解压到 App1 目录,那么把 docBase 设置为 App1 似乎是很自然的事情。
可这会有一个坑,Host 节点指定的 appBase=“webapps”
, 而 App1 就在 webapps 目录,所以 tomcat 会根据 appBase 加载一次 App1;
另 Context 子节点又设置了 docBase=“App1"
,这时 tomcat 又会根据 docBase 加载一次 App1,相当于 App1 被加载了两次。
这会引起很多莫名其妙的问题,如:某一个定时任务,会在同一时刻被执行两次;日志可能会打到前一天的文件等。
3.配置 conf/server.xml 文件,增加 Context 节点,并指定 docBase 为非 webapps 的子目录(推荐)
- 新建
${CATALINA_HOME}/mybapps/App1
目录; - 修改 conf/server.xml 文件,配置 Context 节点,指定
docBase=“${CATALINA_HOME}/myapps/App1”
;这里的${CATALINA_HOME}
为 tomcat 安装路径,使用时需替换为绝对路径; - 将 App1.war 放到
${CATALINA_HOME}/mybapps/App1/
目录下; - 通过命令
jar xvf App1.war
解压 war 包到当前目录; - 启动 tomcat;
- 后续 war 包有更新时,重复步骤3、4,不需要再执行第5步,tomcat 会自动重新部署。
注意:docBase 需要设置为绝对路径
方案3配置示例
conf/server.xml 文件中的 Host 节点:
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">......<Context path="/" docBase="/Users/xxx/soft/apache-tomcat-8.5.39/myapps/App1" debug="0" reloadable="true"></Context></Host>
总结
conf/server.xml 的 Host 节点的 appBase 指定的目录表示,
- 这个目录下面的子目录将自动被部署为应用。
- 这个目录下面的.war文件将被自动解压缩并部署为应用
而 docBase 只是指向你某个应用的目录,可以和 appBase 没有任何关系。特别注意,如果 docBase 指向的是 webapps 下面的目录,会导致应用被加载两次,引起奇怪问题。
tomcat 配置文件 conf/server.xml 中的 appBase和docBase相关推荐
- Linux下的Tomcat服务器修改server.xml中的8080端口号后出现不能访问首页
QUESTION:Linux下的Tomcat服务器修改server.xml中的8080端口号后出现不能访问首页 ANSWER: 简单直接的有效方法:重装tomcat服务器.
- 修改tomcat的conf/server.xml解决网页乱码
--后台 转码 str= new String(str.getBytes("iso8859-1"),"gb2312"); str= new String(str ...
- [转]/tomcat/conf/server.xml配置文件的源码解析
备注: 在把Java项目直接放到/tomcat/webapps目录下时,server.xml的代码是不变的,端口为8080 你可以通过修改这个8080端口进行配置,以及配置<host>里面 ...
- tomcat中conf/server.xml配置线程池不生效的问题注意添加线程池节点executor后要在connector中增加executor属性
优化连接数,主要是在conf/server.xml配置文件中进行修改. 优化线程数 找到Connector port="8080" protocol="HTTP/1.1& ...
- Docker Centos 7.X部署Tomcat 并且修改Server.xml配置文件方案 并设置时区 只要十一步
我用的是腾讯云 Centos 7.3版本,使用Docker最好使用7.x以上版本 1.拉取镜像 docker pull tomcat:8 2.创建容器并且挂载webapps的目录(我这里将本地端口映射 ...
- Tomcat在server.xml中配置虚拟目录
首先,在D盘中新建文件chapter02,然后,在chapter02目录下,新建文件welcome.xml 此时,直接访问是访问不到的 启动Tomcat服务器,在浏览器地址栏中输入 http://lo ...
- tomcat优化之server.xml
#vim $TOMCAT_HOME/conf/server.xml <?xml version='1.0' encoding='utf-8'?> <Server port=" ...
- Spring中,applicationContext.xml 配置文件在web.xml中的配置详解
Spring中,applicationContext.xml 配置文件在web.xml中的配置详解 2016年10月04日 15:22:26 阅读数:7936 转自http://www.cnblogs ...
- server.xml中也能获取Tomcat相对路径
场景 在Tomcat的目录下的conf目录下有一个server.xml文件 我们可以打开这个文件进行Tomcat虚拟路径与物理路径的映射. 比如: 在conf下的server.xml文件里找到Host ...
- Tomcat启动分析server.xml
2019独角兽企业重金招聘Python工程师标准>>> Tomcat Server的结构图 该文件描述了如何启动Tomcat Server <Server> <Li ...
最新文章
- 地图区域划分转换成数学模型解决问题
- template模板的使用方法
- sublime python3中读取和写入文件时如何解决编码问题
- 四十六、微信小程序快速开发入门
- 《看聊天记录都学不会C语言?太菜了吧》(5)打了一把游戏我学会了一个编程知识?
- Silverlight 写了一个2D仿3D的柱状图表
- python turtle画房子详细解释_[宜配屋]听图阁
- 惊艳!28岁就任副教授,“最美女教授”年纪轻轻已是博导、院长
- Linux按照行数、大小切分文件
- 【报告分享】2020年中国5G经济报告--助力新时代高质量发展.pdf(附下载链接)...
- SpringBoot--实战开发--整合SSL
- 【Linux】10个帮助你调试的命令
- 计算机基础知识集体备课,计算机基础知识集体备课.doc
- 解决:应用程序无法启动,因为应用程序的并行配置不正确
- 深入浅出Spring Cloud整合dubbo
- PythonStock(33)特别的巧,发现一个使用 vue 开发的股票系统应用,具备了一些基础的功能,可以拿过来直接跑起来。使用dockerfile进行构建,并跑起来
- 手把手教你搭建明星脸相似度分析系统
- 我的世界神秘时代安卓java版_我的世界神秘时代MOD
- 【数据结构】4中基本逻辑结构和存储结构
- Arduino案例实操 -- 智能巡防小车(三)Arduino IDE巡线小车编程
热门文章
- 木门锁孔合页综合加工机器
- The server encountered an internal error that prevented it from fulfilling this request.
- 微信 小程序 APP 渗透测试方案
- 【机器学习】【决策树】ID3算法,Python代码实现生成决策树的系统
- Viddy VS SocialCam 谁是视频中的Instagram
- uCOS事件相关函数代码理解
- 魔兽世界3.35+mysql_最新魔兽世界3.35兔子王版本商业一键启动服务端+启动教程
- [HDU 5956] The Elder (斜率DP + 可持久化单调队列)
- 智算时代里,浪潮存储的使命与担当
- 30 行代码实现蚂蚁森林自动收能量