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?

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

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

server:
  applicationConnectors:
  - ...
  adminConnectors:
  - type: https
    port: 8444    // should a different port from the application
    keyStorePath: example.keystore
    keyStorePassword: example
    validateCerts: false
Другие вопросы по тегам