You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在作为Maven依赖的Apache Tomcat 9中添加健康检查端点?

配置嵌入式Tomcat 9的HealthCheckValve健康检查端点

当你把Tomcat 9作为Maven依赖(嵌入式场景)使用时,不需要修改独立Tomcat的server.xml,而是通过以下两种常见场景配置:

场景1:使用Tomcat Maven插件运行

如果项目依赖tomcat9-maven-plugin启动Tomcat,有两种配置方式:

方式1:自定义server.xml

  1. 在项目根目录下创建src/main/tomcat文件夹,新建server.xml文件
  2. 在文件的<Engine>、<Host>或<Context>节点下添加Valve配置:
<Valve className="org.apache.catalina.valves.HealthCheckValve"
       uri="/health" />
  1. 在pom.xml的插件配置中指定自定义server.xml路径:
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat9-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <serverXml>src/main/tomcat/server.xml</serverXml>
        <!-- 其他配置:端口、上下文路径等 -->
    </configuration>
</plugin>

方式2:直接在插件中配置Valve

无需额外的server.xml,直接在插件配置中嵌入Valve参数:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat9-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <port>8080</port>
        <path>/</path>
        <valves>
            <valve>
                <className>org.apache.catalina.valves.HealthCheckValve</className>
                <param>
                    <name>uri</name>
                    <value>/health</value>
                </param>
            </valve>
        </valves>
    </configuration>
</plugin>

场景2:自定义代码启动嵌入式Tomcat

如果是通过Java代码手动启动Tomcat(比如Spring Boot嵌入式Tomcat或纯自定义实现):

  1. 确保Maven依赖包含tomcat-catalina:
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-catalina</artifactId>
    <version>9.0.x</version> <!-- 替换为你使用的具体版本 -->
</dependency>
  1. 在启动代码中添加HealthCheckValve到Tomcat的管线中:
import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.valves.HealthCheckValve;

public class EmbeddedTomcatStarter {
    public static void main(String[] args) throws Exception {
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);
        
        // 加载Web应用上下文
        Context context = tomcat.addWebapp("/", System.getProperty("user.dir") + "/src/main/webapp");
        
        // 初始化并添加健康检查Valve
        HealthCheckValve healthValve = new HealthCheckValve();
        healthValve.setUri("/health"); // 可省略,默认就是/health
        context.getPipeline().addValve(healthValve);
        
        tomcat.start();
        tomcat.getServer().await();
    }
}

配置完成后,启动Tomcat,访问http://localhost:8080/health即可收到200 OK的健康响应。

内容的提问来源于stack exchange,提问作者mdanish98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:10:24