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}}
- Что здесь происходит? Как мне зарегистрировать мой медицинский осмотр?
- Кроме того, я настроил 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