Gab*_*l C 7 java spring amazon-web-services
我正在亚马逊的Beanstalk平台上部署基于Spring的Web应用程序,它们为我提供了为我的应用程序设置"健康检查"URL路径的选项.
我们的想法是,在部署之后,他们的平台将针对该URL执行请求,以查看应用程序是否已成功启动.因此,如果请求导致HTTP 200,则应用程序可能正常.但是如果它导致HTTP 500或其他东西,平台就会知道应用程序存在问题.
所以,我希望我可以开发某种servlet来检查Spring Application Context是否成功初始化,以便为平台提供适当的HTTP响应代码.
有没有人尝试这样的事情?出于类似的目的?
我想知道Spring是否已经为此提供了一些优雅的解决方案.
dim*_*hez 10
我建议使用Metrics的运行状况检查功能.您可以设置许多扩展HealthCheck类和实现check()方法的类.这些运行状况检查实现将是Spring托管bean本身,并且可以自动装配Spring bean并验证它们.然后配置HealthCheckServlet为监视应用程序状态.还要检查metrics-spring项目.它将使Spring和Metrics集成更简单.
如果您使用的是Java Spring配置,那么可能会有一个像MetricsConfigurerAdaptermetrics-spring 那样的Metrics配置
@Configuration
@EnableMetrics
public class MetricsConfig extends MetricsConfigurerAdapter { }
Run Code Online (Sandbox Code Playgroud)
然后@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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15465 次 |
| 最近记录: |