是否可以自定义Dropwizrd的健康检查输出,例如:/health用于健康检查,而不是/healthcheck和一些输出(如{“status”: 200} )。
我意识到我可以简单地写一个新的资源来做我所需要的任何事情,我只是想知道是否有一种更标准的方法来做到这一点。
发布于 2014-11-28 15:58:20
根据我在0.7.1源代码中所读到的内容,很遗憾,无法更改用于健康检查的资源URI,我非常怀疑您能否更改healthcheck格式。我还记得人们抱怨不能向管理页面添加REST资源,只有servlet。可能是0.8.0?
这里是我迄今为止在源代码上跟踪的细节。也许我误解或误解了什么东西,所以有人可以修复它。
度量标准实际上已经编写了AdminServlet来添加healtcheck servlet,其方式是检查servlet配置是否定义了URI。
this.healthcheckUri = getParam(config.getInitParameter(HEALTHCHECK_URI_PARAM_KEY), DEFAULT_HEALTHCHECK_URI);但是,下拉向导没有提供一种在AbstractServerFactory上以任何方式注入此配置的方法。
handler.addServlet(new NonblockingServletHolder(new AdminServlet()), "/*");NonblockingServletHolder是一个向AdminServlet提供配置,但由AbstractServerFactory用空构造函数创建的配置,无法提供更改配置的方法。
我已经考虑并尝试从ServletHolder方法上的Environment对象访问Application.run,但是直到运行run方法之后才会创建admin。
environment.getAdminContext().getServletHandler().getServlets()[0].setInitParameter("healthcheck-uri", "/health");发布于 2015-10-06 18:37:39
在您的run()函数中,类似这样的内容将帮助您控制健康检查的URI:
environment.servlets().addServlet(
"HealthCheckServlet",
new HealthCheckServlet(environment.healthChecks())
).addMapping("/health");如果要实际控制返回的内容,则需要编写自己的资源文件。从注册表中获取所有健康检查,运行它们,并根据结果返回所需的聚合值。
https://stackoverflow.com/questions/27145108
复制相似问题