Я сталкиваюсь со следующей ситуацией: я написал расширение CDI, с помощью которого я хочу программно зарегистрировать дополнительные bean-компоненты в BeanManager
.Я уже реализовал расширение и зарегистрировался в папке META-INF/services
.Пока все работает нормально, и я могу отследить контейнер, вызывающий этот метод:
public class TestCdiExtension implements Extension {
public void observeAfterBeanDiscovery(@Observes AfterBeanDiscovery event, BeanManager manager) {
// Code goes here
}
}
Моя проблема сейчас такова: чтобы определить, какие bean-компоненты должны быть зарегистрированы, мне нужен доступ к ServletContext
текущей сети.приложение, в котором работает CDI.
Я понимаю, что вы можете использовать CDI полностью без среды сервлета, поэтому жестких ссылок нет.Однако: как я могу выполнить регистрацию дополнительных бинов в зависимости от того, что находится в ServletContext
?
Правильно ли использовать расширение?Есть ли другое (лучшее?) Решение сделать это?