/healthcheck
대신 healthchecks와 같은 /health
및 {“status”: 200}
과 같은 일부 출력이되도록 Dropwizrd의 healthcheck 출력을 사용자 정의 할 수 있습니까?Dropwizard : 상태 확인 주소 및 형식 사용자 정의
필자는 필자가 필요로하는 것을 수행하는 새로운 리소스를 간단하게 작성할 수 있음을 알고 있습니다.이 작업을 수행하는 표준 방법이 있는지 궁금합니다.
/healthcheck
대신 healthchecks와 같은 /health
및 {“status”: 200}
과 같은 일부 출력이되도록 Dropwizrd의 healthcheck 출력을 사용자 정의 할 수 있습니까?Dropwizard : 상태 확인 주소 및 형식 사용자 정의
필자는 필자가 필요로하는 것을 수행하는 새로운 리소스를 간단하게 작성할 수 있음을 알고 있습니다.이 작업을 수행하는 표준 방법이 있는지 궁금합니다.
0.7.1 소스 코드에서 읽은 것부터 유감스럽게도 건강 검진을위한 리소스 URI를 변경할 수 없기 때문에 건강 검진 형식을 변경할 수 있을지 의심 스럽습니다. 또한 관리자 페이지에 REST 리소스를 추가 할 수 없다는 불평을하는 사람들, 서블릿 만 기억합니다. 0.8.0일까요?
다음은 소스 코드에서 지금까지 추적 한 내용입니다. 어쩌면 내가 잘못 읽거나 잘못 이해 한 것일 수도있어 누군가가 고칠 수 있습니다.메트릭은 healtcheck 서블릿을 추가하여 서블릿 구성에서 URI가 정의되어 있는지 여부를 확인하는 방식으로 실제로 작성되었습니다 (AdminServlet).
this.healthcheckUri = getParam(config.getInitParameter(HEALTHCHECK_URI_PARAM_KEY), DEFAULT_HEALTHCHECK_URI);
는 그러나 AbstractServerFactory에 어떤 식 으로든이 구성을 주입하는 방법을 dropwizard 제공하지 않습니다.
handler.addServlet(new NonblockingServletHolder(new AdminServlet()), "/*");
는
AdminServlet
에 설정을 제공하고 있지만 빈 생성자를
AbstractServerFactory
에 의해 생성되고 설정을 변경할 수있는 방법을 제공하지 않는 것입니다.
Environment
메서드에서 Application.run
메서드의 ServletHolder에 액세스하려고 시도했지만 run
메서드가 실행될 때까지 관리 서블릿이 만들어지지 않습니다. 당신의 run()
기능이 같은
environment.getAdminContext().getServletHandler().getServlets()[0].setInitParameter("healthcheck-uri", "/health");
뭔가 당신이 당신의 healthchecks의 URI를 제어하는 데 도움이됩니다 당신이 실제로 자신의 리소스 파일을 작성해야 반환 무엇을 제어하려면
environment.servlets().addServlet(
"HealthCheckServlet",
new HealthCheckServlet(environment.healthChecks())
).addMapping("/health");
. 등록에서 모든 healthcheck을 가져 와서 실행하고 결과에 따라 원하는 집계 값을 반환하십시오.
나는 이것을 시도했다, 그것은 완벽하게 작동한다. 간단한 서버 유형의 경우 매핑은 applicationContextPath를 기준으로합니다. – romacafe