CDI - написание пользовательских контекстов и областей

StackOverflow https://stackoverflow.com/questions/3792147

  •  05-10-2019
  •  | 
  •  

Вопрос

Я хотел бы иметь свои собственные контексты для некоторых проектов на основе CDI. Мне нужно (хочу) пользовательские призывы, чтобы я мог изолировать, как долго живет компонент и где.

Чтобы реализовать свой собственный контекст, вам необходимо реализовать контекстный интерфейс, который является довольно объяснительным, но как или где вам действительно определить, когда он создан?

Это было полезно?

Решение

Я еще не проверил это, но я верю, что это будет работать. Для каждого пользовательского объема / контекста вы хотите в своем приложении, вам просто нужно добавить это контекст через расширение, когда контейнер инициализирован:

public void afterBeanDiscovery(@Observes AfterBeanDiscover afterBeanDiscovery, BeanManager beanManager)
{
  CustomContext customContext = new CustomContext();
  afterBeanDiscovery.addContext(customContext);

  beanManager ...
}

Теперь трюк, вам нужно провести ссылку на этот контекст, поэтому, когда вы хотите начать или остановить его, вы можете. Это было бы что-то вроде:

@Inject
protected HttpRequestLifecycle httpRequestLifecycle;

public void doSomething()
{
  startContext();
  doStuff();
  stopContext();
}

public void startContext()
{
  httpRequestContextLifecycle.getHttpRequestContext().activate();
}

Это должно сделать это, там нет богатства документации, поэтому я надеюсь, что это поможет.

Любой заинтересован, проверьте Источник здесь:http://github.com/walterjwhite/server.web.Application

Уолтер

Другие советы

Проверьте эту статью одона: Пользовательские призывы в CDI 1.0 и весна 3.1 (нижняя половина)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top