CDI - наблюдение событий контейнера
-
30-09-2019 - |
Вопрос
Я пытаюсь наблюдать как события запуска, так и отключения для веб-приложения CDI. У меня есть приложениеCOped Bean, который слушает эти события:
@ApplicationScoped
public class PrettyfacesStartupObserver
{
private static final Log LOGGER = LogFactory.getLog(PrettyfacesStartupObserver.class);
public PrettyfacesStartupObserver()
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\nconstructor");
}
public void onStartup(@Observes
AfterBeanDiscovery afterBeanDiscovery
)
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\nafter bean discover");
}
public void onStartup(@Observes
AfterDeploymentValidation afterDeploymentValidation
)
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nafter deployment validation");
}
public void onShutdown(@Observes
BeforeShutdown beforeShutdown
)
{
LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nbefore shutdown:" + beforeShutdown);
}
Я ничего не вижу в бревнах.
Что мне не хватает?
Решение
Благодаря Пит Мьюиру решение было реализации интерфейса расширения. Как только я сделал это, наряду с созданием специального файла, он работал идеально.
То, что нужно помнить, если вы хотите наблюдать (или действовать) контейнерные события, вы должны реализовать интерфейс расширения, как это специальное событие.
https://docs.jboss.org/weld/reference/latest/en-us/html/extend.html#d0e4984.
Уолтер
Другие советы
«Специальный файл», упомянутый Walter White:
META-INF/services/javax.enterprise.inject.spi.Extension
Этот файл должен содержать полностью квалифицированное имя вашего класса расширения. IE:
org.mydomain.extension.MyExtension