1. 概述

本文将探讨如何在Tomcat根目录部署Web应用,实现直接通过http://localhost:8080/访问应用。

2. Tomcat部署基础与术语

首先,Tomcat部署基础可参考指南:如何部署WAR文件到Tomcat

简单来说,Web应用放置在$CATALINA_HOME\webapps目录下($CATALINA_HOME是Tomcat安装目录)。

上下文路径(Context Path) 指应用相对于服务器地址的访问路径。默认情况下,Tomcat根据WAR文件名生成上下文路径:

  • 部署ExampleApp.war → 访问地址:http://localhost:8080/ExampleApp(上下文路径为/ExampleApp

若需通过http://localhost:8080/直接访问,可采用以下方案。上下文概念的详细说明可参考Tomcat官方文档

3. 将应用部署为ROOT.war

最简单粗暴的方案:
✅ 删除$CATALINA_HOME\webapps下的默认/ROOT/目录
✅ 将ExampleApp.war重命名为ROOT.war并部署

应用即可通过http://localhost:8080/访问。

4. 在server.xml中指定上下文路径

通过修改$CATALINA_HOME\conf\server.xml配置上下文路径:
<Host>标签内添加:

<Context path="" docBase="ExampleApp"></Context>

⚠️ 注意:此方案会导致应用被重复部署:

  • http://localhost:8080/ExampleApp/
  • http://localhost:8080/

解决方案:在<Host>标签中禁用自动部署:

<Host name="localhost" appBase="webapps" unpackWARs="true"
  autoDeploy="false" deployOnStartup="false">
    <Context path="" docBase="ExampleApp"></Context>

    <!-- 其他localhost配置 -->
</Host>

不推荐:自Tomcat 5起此方案已不推荐使用,因为修改server.xml后必须重启Tomcat才能生效。

5. 在应用专用XML文件中指定上下文路径

更优雅的方案:创建应用专用配置文件。
$CATALINA_HOME\conf\Catalina\localhost下创建ROOT.xml

<Context docBase="../deploy/ExampleApp.war"/>

关键点:

  1. 无需显式指定path属性,Tomcat会自动根据ROOT.xml文件名识别根路径
  2. docBase路径必须位于$CATALINA_HOME\webapps目录外(如示例中的../deploy/

6. 总结

本文介绍了三种在Tomcat根目录部署Web应用的方案:

  1. 重命名WAR为ROOT.war:最简单直接
  2. 修改server.xml:不推荐,存在重复部署和需重启问题
  3. 创建ROOT.xml:推荐方案,灵活且无副作用

根据实际场景选择合适的方案,避免踩坑!


原始标题:Deploy Application at Tomcat Root

» 下一篇: Java Weekly, 第203期