gpt4 book ai didi

java - Spring Web 应用程序健康检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:05 24 4
gpt4 key购买 nike

我正在 Amazon 的 Beanstalk 平台上部署基于 Spring 的 Web 应用程序,它们为我提供了为我的应用程序设置“健康检查”URL 路径的选项。

他们的想法是,他们的平台将在部署后针对该 URL 发出请求,以查看应用程序是否成功启动。因此,如果请求结果为 HTTP 200,则应用程序可能没有问题。但如果它导致 HTTP 500 或其他错误,平台就会知道应用程序存在问题。

因此,我希望我可以开发某种 servlet,它可以检查 Spring Application Context 是否已成功初始化,以便为平台提供适当的 HTTP 响应代码。

有没有人尝试过这样的事情?出于类似目的?

我想知道 Spring 是否已经为此提供了一些优雅的解决方案。

最佳答案

我建议使用 Metrics 中的健康检查功能.您可以设置许多扩展 HealthCheck 的类类并实现 check() 方法。这些健康检查实现本身将是 Spring 管理的 bean,并且可以 Autowiring Spring bean 并验证它们。然后配置HealthCheckServlet监视应用程序状态。还要检查 metrics-spring项目。这将使 Spring 和 Metrics 集成更简单。

如果您正在使用 Java Spring 配置,您可能有一个像这样的 Metrics 配置,它从 metrics-spring 扩展了 MetricsConfigurerAdapter

@Configuration
@EnableMetrics
public class MetricsConfig extends MetricsConfigurerAdapter { }

然后 @Import(value = {MetricsConfig.class}) 到您的 Spring 配置。

您还需要实现 ServletContextListener 以连接 HealthCheckServlet 和 Spring。此 HealthCheckContextListener 应添加到您的 web.xml

public class HealthCheckContextListener extends
HealthCheckServlet.ContextListener implements ServletContextListener {

private WebApplicationContext context;

public HealthCheckContextListener(WebApplicationContext context) {
this.context = context;
}

public HealthCheckContextListener() {}

@Override
public void contextInitialized(ServletContextEvent event) {
this.context = WebApplicationContextUtils.getRequiredWebApplicationContext(event.getServletContext());
event.getServletContext().setAttribute(HealthCheckServlet.HEALTH_CHECK_REGISTRY,
context.getBean(HealthCheckRegistry.class));
}

@Override
protected HealthCheckRegistry getHealthCheckRegistry() {
return (HealthCheckRegistry) context.getBean(HealthCheckRegistry.class);
}
}

关于java - Spring Web 应用程序健康检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com