DropWizard没有注册我的健康检查

IAm*_*aja 9 java health-monitoring dropwizard codahale-metrics

在我的DropWizard(v0.7.0)应用程序中,我有DummyHealthCheck这样的:

public class DummyHealthCheck extends HealthCheck {
    @Override
    protected Result check() throws Exception {
        return Result.healthy();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的主要Applicationimpl:

public class MyApplication extends Application<MyConfiguration> {
    @Override
    public void run(MyConfiguration configuration, Environment environment)
            throws Exception {
        environment.jersey().register(new DummyHealthCheck());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我启动服务器时,它成功启动(没有异常/错误),但是我收到以下消息:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!    THIS APPLICATION HAS NO HEALTHCHECKS. THIS MEANS YOU WILL NEVER KNOW      !
!     IF IT DIES IN PRODUCTION, WHICH MEANS YOU WILL NEVER KNOW IF YOU'RE      !
!    LETTING YOUR USERS DOWN. YOU SHOULD ADD A HEALTHCHECK FOR EACH OF YOUR    !
!         APPLICATION'S DEPENDENCIES WHICH FULLY (BUT LIGHTLY) TESTS IT.       !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Run Code Online (Sandbox Code Playgroud)

但是当我去的时候,http://localhost:8081/healthcheck我看到:

{"deadlocks":{"healthy":true}}
Run Code Online (Sandbox Code Playgroud)
  1. 这里发生了什么?我如何注册健康检查?
  2. 另外,我已将DropWizard配置为在端口8443上使用SSL(自签名); 我已经验证了这适用于我的正常终点.但是,我很惊讶地看到我的管理员应用程序仍在8081上通过HTTP公开.如何为HTTPS配置它?

Pau*_*tha 13

问题1:

您没有在泽西岛注册,因为健康检查是特定于DropWizard的.它们应注册如下

environment.healthChecks().register("dummy", new DummyHealthCheck());
Run Code Online (Sandbox Code Playgroud)

为解释在这里.如果它如上所述,你会看到

{"deadlocks":{"healthy":true}, "dummy":{"healthy":true}}
Run Code Online (Sandbox Code Playgroud)

问题2:

我假设你已经做了类似的事情

server:
  applicationConnectors:
    - type: https
      port: 8443
      keyStorePath: example.keystore
      keyStorePassword: example
      validateCerts: false
Run Code Online (Sandbox Code Playgroud)

在YAML,因为看到这里.这仅适用于应用程序.您还需要配置管理员

server:
  applicationConnectors:
  - ...
  adminConnectors:
  - type: https
    port: 8444    // should a different port from the application
    keyStorePath: example.keystore
    keyStorePassword: example
    validateCerts: false
Run Code Online (Sandbox Code Playgroud)