CDI - Наблюдение за событиями контейнера

Я пытаюсь наблюдать как события запуска, так и завершения работы веб-приложения CDI. У меня есть компонент ApplicationScoped, который прослушивает эти события:

@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);
    }

Я ничего не вижу в журналах.

Чего мне не хватает?

6
задан Stuart Cook 19 October 2011 в 02:20
поделиться

1 ответ

Благодаря Питу Мьюиру решение заключалось в реализации интерфейса Extension. Как только я это сделал вместе с созданием специального файла, все заработало отлично.

Следует помнить, что если вы хотите наблюдать за событиями контейнера (или воздействовать на них), вы должны реализовать интерфейс расширения, поскольку это особое событие.

https://docs.jboss.org/weld/reference/latest/en-US/html/extend.html#d0e4984

Вальтер

15
ответ дан 8 December 2019 в 05:52
поделиться