Доступ к ресурсам ServletContext в расширении CDI - PullRequest
2 голосов
/ 31 марта 2011

Я сталкиваюсь со следующей ситуацией: я написал расширение 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?

Правильно ли использовать расширение?Есть ли другое (лучшее?) Решение сделать это?

...