本地手动部署WAR包到Tomcat

本文详细介绍了如何在Tomcat中手动部署WAR包,包括直接将WAR包放入appBase目录、通过server.xml配置Context以及在xmlBase下配置Context片段。讨论了不同部署方式的配置属性,如autoDeploy、deployOnStartup等,并分析了自定义访问路径、防止重复部署等问题的解决方案。
摘要由CSDN通过智能技术生成

部署WAR包

场景需求

假设我们刚安装了tomcat,并且未对其做过修改。

此时,配置文件CATALINA_BASE\conf\server.xml中的Host元素内容如下:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

其中,没有Context子元素。

我们已经有WEB项目Hello-User的WAR包hello-user-1.0.0.SNAPSHOT.war。现在,要将它部署到tomcat,并且可以使用localhost:8080/user来访问它。应该怎么办?

下面我们就一步一步,分析各种部署方案,并指出其痛点所在。

1. 直接把war包放到appBase目录

把war包直接放到webapps目录,启动tomcat,浏览器输入localhost:8080/hello-user-1.0.0.SNAPSHOT,即可访问。

下面具体介绍配置中Host元素及其常见属性的含义。官方文档

Host 元素

Host表示虚拟主机。

name

name属性值,对应请求URL中的主机名部分。

可以使用通配符*,比如*.apache.org

appBase

appBase是部署应用的基本目录。

可选,如果删掉它,会使用默认值webapps

xmlBase

Context XML 片段文件的基本目录。

可选,如果删掉它,会使用默认值conf\[EngineName]\[HostName]

unpackWARs

unpackWARs="true",表示部署WAR时,会自动解压包,并且解压到appBase目录中。

可选,如果删掉它,会使用默认值true

autoDeploy

autoDeploy="true",表示自动部署。

在tomcat运行时,会定期自动检查appBase目录,以及xmlBase目录中的Context配置片段,并自动卸载删除的项目,自动加载新加入的项目,或自动重新部署更新过的项目。

注意,只在tomcat运行过程中,项目有变动时,才自动部署。在启动tomcat时,该属性不起作用。

可选,如果删掉它,会使用默认值true

deployOnStartup

deployOnStartup="true",表示启动时自动部署。

在tomcat启动时,会自动检查appBase目录,以及xmlBase目录中的Context配置片段,并加载其中未部署的项目。

注意,有时,项目会在deployOnStartup="true"起作用前,被部署。后面会介绍到。

可选,如果删掉它,会使用默认值true

综上所述,配置

<Host name="localhost" appBase="webapps" 
      unpackWARs="true" 
      autoDeploy="true" deployOnStartup="true">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值