Я создал EventHookListener
, который реализует LifecycleListener
. Я переопределил метод lifecycleEvent()
и продолжаю слушать сервер по типу сервера печати и состоянию сервера.
Фрагмент кода:
@Override
public void lifecycleEvent(LifecycleEvent arg0) {
Lifecycle lifecycle = arg0.getLifecycle();
System.out.println("Lifecycle:"+lifecycle);
if (lifecycle == null) {
return;
}
String type = arg0.getType();
System.out.println("Type:"+type);
if (type == null) {
return;
}
String stateName = lifecycle.getStateName();
System.out.println("StateName:"+stateName);
if (stateName == null) {
return;
}
}
Для tomcat версия 9.0.26 Сервер Tomcat продолжает слушать, если сервер работает. и ниже журнал входит в Catalina.out
: Но в 9.0.26 версии сервер Tomcat продолжает прослушивать, если сервер работает.
23-Sep-2019 16: 36: 08.381 INFO [main] org.apache.coyote.AbstractProtocol.start Запуск ProtocolHandler ["ajp-nio-8009"] Жизненный цикл: StandardServer [8005] Тип: after_start StateName: STARTED
текущий каталог: / tmp Код выхода: 0
23-сен-2019 16: 36: 08.407 INFO [main] org.apache.catalina.startup.Catalina.start Запуск сервера за [8 239] миллисекунд Срок эксплуатации: StandardServer [8005] Тип: периодическое StateName: STARTED
Но для любой другой версии Tomcat (например, версии 9.0.6 или 8.5.45) прослушиватель жизненного цикла не прослушивает, как только сервер Tomcat переходит в состояние after_start.
ex.
Срок эксплуатации: StandardServer [8005] Тип: after_start StateName: STARTED
текущий каталог: / tmp Код выхода: 0 23-Sep-2019 16:48: 10.422 INFO [main] org.apache.catalina.startup.Catalina.start Запуск сервера в 681мс
Может кто-нибудь помочь с любой подсказкой, которую я здесь упускаю? Эта функция Lifecycle listener
работает только в 9.0.26 версии , но не в более старой версии. Хотя содержимое класса LifecycleListener одинаково для более старых tomcat и последней версии tomcat.