Подкласс ContextLoaderListener
:
public class NotifyingContextLoaderListener extends ContextLoaderListener {
@Override
public void contextInitialized(ServletContextEvent event) {
try {
super.contextInitialized(event);
//generate success event
}
catch (RuntimeException e) {
//generate failure event
throw e;
}
}
}
И используйте его в своем web.xml
вместо ContextLoaderListener
:
<listener>
<listener-class>com.example.NotifyingContextLoaderListener</listener-class>
</listener>
Обратите внимание, что ваше решение для генерации события успеха не является полностью безопасным.При успешном создании компонента ProductPostInitializer
генерируется событие, а не все приложение / контекст.Это означает, что событие может быть сгенерировано, даже если запуск контекста впоследствии завершится неудачно (например, bean-компоненты, зависящие от ProductPostInitializer
, не запускаются).
Решение выше решает эту проблему.