DropWizard не регистрирует мою проверку здоровья

В моем приложении DropWizard (v0.7.0) у меня есть DummyHealthCheck вот так:

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

Затем в моей основной реализации Application:

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

Когда я запускаю сервер, он запускается успешно (без исключений/ошибок), однако я получаю следующее сообщение:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!    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.       !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Но когда я захожу в http://localhost:8081/healthcheck, я вижу:

{"deadlocks":{"healthy":true}}
  1. Что здесь происходит? Как зарегистрировать проверку здоровья?
  2. Кроме того, я настроил DropWizard для использования SSL (самозаверяющего) на порту 8443; Я проверил, что это работает с моими обычными конечными точками. Однако я удивлен, увидев, что мое приложение администратора по-прежнему доступно на 8081 через HTTP. Как мне настроить его и для HTTPS?

person IAmYourFaja    schedule 11.12.2014    source источник


Ответы (1)


Вопрос 1:

Вы не регистрируете его на Джерси, поскольку проверка работоспособности зависит от DropWizard. Они должны быть зарегистрированы следующим образом

environment.healthChecks().register("dummy", new DummyHealthCheck());

как описано здесь. Если бы он был зарегистрирован, как указано выше, вы бы увидели

{"deadlocks":{"healthy":true}, "dummy":{"healthy":true}}

Вопрос 2:

Я предполагаю, что вы уже сделали что-то похожее на

server:
  applicationConnectors:
    - type: https
      port: 8443
      keyStorePath: example.keystore
      keyStorePassword: example
      validateCerts: false

в вашем yaml, как показано здесь. Это только для приложения. Вам также нужно будет настроить администратора

server:
  applicationConnectors:
  - ...
  adminConnectors:
  - type: https
    port: 8444    // should a different port from the application
    keyStorePath: example.keystore
    keyStorePassword: example
    validateCerts: false
person Paul Samsotha    schedule 11.12.2014
comment
@IAmYourFaja, вам действительно нужна IDE! Вам так помогает :) - person th3morg; 12.12.2014