В моем загрузочном приложении Spring мне нужно дождаться, когда веб-сервер (по умолчанию Tomcat) будет полностью инициализирован и готов к трафику, прежде чем отправлять сообщения другим приложениям, сообщающим им отправлять HTTP-запросы мне (в частности, систему мониторинга который попадает на мой /health
).
Я попытался поместить логику, которая отправляет сообщения другим приложениям в ApplicationListener<ContextRefreshedEvent>
, но все еще слишком рано. Другие приложения пытаются запросить меня и провалиться. Прямо сейчас я положил задержку в onApplicationEvent
, и это работает, но оно взломанно и racy.
Я также попытался добавить ServletContextInitializer
, но уволился еще раньше.
Я предполагаю, что мне нужно использовать Tomcat API, но я хотел посмотреть, есть ли что-то в Boot API для этого.