1. 概述
本文将深入解析 Tomcat 自带的 Manager 应用(Manager App)——一个集成在 Tomcat 服务器中的标准 Web 应用,用于管理已部署的 Web 程序。
简单来说,它就是你的 Tomcat 控制台。通过它,你可以:
✅ 查看服务器状态与资源配置
✅ 部署、启动、停止、重载 Web 应用
✅ 管理用户会话(Session)
✅ 查看 SSL/TLS 配置与诊断信息
✅ 执行线程转储、内存泄漏检测等运维操作
对于运维和开发人员来说,这是一个轻量但功能强大的管理工具,尤其适合自动化脚本集成。
2. 安装 Tomcat
使用 Manager 前,自然要先装好 Tomcat。安装过程非常简单,本文基于最新稳定版 Tomcat 9 进行演示。
📌 提示:可前往 Apache Tomcat 官网 下载对应版本。安装后确保
CATALINA_HOME
环境变量正确设置。
3. 访问 Manager 应用
Tomcat Manager 提供两种访问方式:
- HTML 界面:适合人工操作
- 文本接口(Text API):适合脚本或 CI/CD 集成
接口地址
- HTML 界面:
http[s]://<server>:<port>/manager/html/
- 文本接口:
http[s]://<server>:<port>/manager/text/
⚠️ 注意:默认情况下,这些接口是禁止访问的,必须先配置用户权限。
配置访问权限
编辑 $CATALINA_HOME/conf/tomcat-users.xml
,添加如下内容:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcatgui" password="s3cret" roles="manager-gui"/>
<user username="tomcattext" password="baeldung" roles="manager-script"/>
</tomcat-users>
说明:
manager-gui
:允许访问 HTML 界面manager-script
:允许使用文本接口(如 curl 调用)- 我们创建了两个用户:
tomcatgui
:用于登录网页tomcattext
:用于脚本调用 API
✅ 踩坑提醒:如果遇到 403 错误,请检查角色名是否拼写正确,且 Tomcat 重启后配置已生效。
4. 查看已部署应用
4.1 使用 Web 界面
访问 http://localhost:8080/manager/html,使用 tomcatgui:s3cret
登录。
登录后,页面顶部会列出所有已部署的应用:
每行信息包括:
- 应用名称(Context Path)
- 运行状态(Running/Stopped)
- 活跃 Session 数
- 操作按钮:启动、停止、重载、卸载
4.2 使用文本接口
通过 curl
调用文本接口获取应用列表:
curl -u tomcattext:baeldung http://localhost:8080/manager/text/list
输出示例:
OK - Listed applications for virtual host [localhost]
/:running:0:ROOT
/examples:running:0:examples
/host-manager:running:0:host-manager
/manager:running:1:manager
/docs:running:0:docs
格式说明:/上下文路径:状态:活跃会话数:版本
✅ 小技巧:该接口非常适合写监控脚本,比如定期检查关键应用是否存活。
5. 应用管理操作
Manager 支持对应用执行启停、重载等操作。
5.1 Web 界面操作
直接点击对应按钮即可,操作结果会显示在页面顶部提示区。
5.2 文本接口操作
停止应用
curl -u tomcattext:baeldung http://localhost:8080/manager/text/stop?path=/examples
OK - Stopped application at context path [/examples]
启动应用
curl -u tomcattext:baeldung http://localhost:8080/manager/text/start?path=/examples
OK - Started application at context path [/examples]
重载应用
curl -u tomcattext:baeldung http://localhost:8080/manager/text/reload?path=/docs
OK - Reloaded application at context path [/docs]
⚠️ 注意:重载仅对解压部署的应用有效,WAR 包部署的无法热重载类变更。
6. 会话管理
除了应用本身,还可以管理用户会话(Session),比如手动销毁异常会话。
6.1 Web 界面操作
点击应用列表中“Sessions”列的链接,进入会话详情页:
可查看:
- 会话持续时间
- 最近活跃时间
- 剩余过期时间(默认 30 分钟)
支持勾选并点击 Invalidate selected sessions 销毁指定会话。
首页还有 Expire sessions 按钮,可批量清理空闲超时的会话。
6.2 文本接口操作
查看会话信息
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/sessions?path=/manager"
输出:
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [2 - <3] minutes: [1] sessions
Inactive for [13 - <14] minutes: [1] sessions
清理空闲会话
清理 /manager
应用中空闲超过 10 分钟的会话:
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/expire?path=/manager&idle=10"
输出中会显示清理数量:
Inactive for [>10] minutes: [1] sessions were expired
✅ 实战建议:可在定时任务中定期清理长时间空闲会话,防止内存堆积。
7. 部署新应用
准备工作
下载 Tomcat 官方提供的 sample WAR 用于测试部署。
7.1 Web 界面部署
有三种方式:
✅ 方式一:上传 WAR 文件
点击“Deploy”区域的“Choose File”上传 WAR,Manager 会自动以文件名作为 Context Path 部署。
部署成功后可通过 http://localhost:8080/sample
访问。
✅ 方式二:指定本地文件路径
填写 WAR 文件的绝对路径(如 file:/tmp/sample.war
)和 Context Path(如 /sample
)。
✅ 方式三:使用 XML 部署描述符
上传一个 Context
配置文件(如 sample.xml
),可指定更多参数:
<Context docBase="/tmp/sample.war" reloadable="true" />
⚠️ 注意:XML 中的
path
属性会被忽略,Context Path 由文件名决定(如sample.xml
→/sample
)。
7.2 文本接口部署
卸载应用
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/undeploy?path=/sample"
OK - Undeployed application at context path [/sample]
部署 WAR
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/deploy?path=/sample&war=file:/tmp/sample.war"
OK - Deployed application at context path [/sample]
使用 XML 部署
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/deploy?config=file:/tmp/sample.xml"
OK - Deployed application at context path [/sample]
✅ 自动化利器:文本接口非常适合集成到 Jenkins、Ansible 等发布系统中。
8. 查看 SSL 配置
启用 SSL
- 生成自签名证书:
keytool -genkey -alias tomcat -keyalg RSA -keystore conf/localhost-rsa.jks
- 修改
conf/server.xml
,启用 HTTPS Connector:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" />
</SSLHostConfig>
</Connector>
重启 Tomcat 后,HTTPS 服务将在 8443 端口运行。
8.1 Web 界面查看
访问 https://localhost:8443/manager/html,点击 Diagnostics 区域按钮:
- Ciphers:列出支持的加密套件
- Certificates:显示当前证书信息
- Trusted Certificates:显示受信任 CA(本例为空)
还可动态重载 SSL 配置:
8.2 文本接口查看
# 查看加密套件
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslConnectorCiphers"
# 查看证书
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslConnectorCerts"
# 查看受信任证书
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslConnectorTrustedCerts"
# 重载 SSL 配置
curl -ku tomcattext:baeldung "https://localhost:8443/manager/text/sslReload"
OK - Reloaded TLS configuration for all TLS virtual hosts
⚠️ 注意:
-k
参数用于跳过自签名证书的 SSL 验证。
9. 查看服务器状态
点击页面右上角的 Server Status,可查看:
- JVM 内存使用
- 线程池状态
- 请求处理统计
- 虚拟主机与连接器信息
点击 Complete Server Status 可查看更详细的应用级指标。
❌ 文本接口不支持直接获取状态页,但可通过以下方式获取 XML 格式数据:
- 完整状态:
https://localhost:8443/manager/status?XML=true
- 所有状态:
https://localhost:8443/manager/status/all?XML=true
(部分版本不支持)
10. 保存当前配置
Manager 支持将运行时的配置(如动态添加的 Context)保存回 conf/server.xml
。
启用配置保存功能
在 conf/server.xml
的 <Server>
标签内添加:
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener" />
重启 Tomcat。
保存配置
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/save"
OK - Server configuration saved
✅ 注意:旧版
server.xml
会被备份,但注释可能丢失。
11. 诊断功能
11.1 线程转储(Thread Dump)
获取 JVM 当前线程快照,用于分析死锁或性能瓶颈:
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/threaddump"
输出示例:
OK - JVM thread dump
2019-10-06 23:19:10.066
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.3+12-LTS mixed mode):
...
11.2 检测内存泄漏
Tomcat 提供内存泄漏检测机制,可识别应用重载后未释放的类:
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/findleaks?statusLine=true"
OK - No memory leaks found
✅ 建议:在频繁重载开发环境定期执行此命令。
11.3 查看可用资源
列出全局资源(如 JNDI 数据源):
curl -u tomcattext:baeldung "http://localhost:8080/manager/text/resources"
输出:
OK - Listed global resources of all types
UserDatabase:org.apache.catalina.users.MemoryUserDatabase
12. 总结
Tomcat Manager 是一个功能全面、开箱即用的管理工具,适用于:
- 日常运维:启停应用、查看状态
- 故障排查:线程转储、内存泄漏检测
- 自动化部署:通过文本接口实现 CI/CD 集成
掌握其 HTML 与文本接口的使用,能极大提升 Web 应用的部署与维护效率。
🔗 更多细节可参考官方文档:Tomcat Manager How-To