Pregunta

Me gustaría tener mis propios contextos para algunos proyectos basados ??en CDI. Que necesito (falta) de la aduana alcances de modo que pueda aislar las cuánto tiempo una vida de componentes y dónde.

Para implementar su propio contexto, es necesario implementar la interfaz de contexto, que es bastante auto-explicativo, pero cómo o dónde se define realmente cuando se crea?

¿Fue útil?

Solución

No he probado esto todavía, pero creo que esto va a funcionar. Para cada ámbito personalizado / contexto que desea en su aplicación, sólo hay que añadir que el contexto a través de una extensión cuando se inicializa el contenedor:

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

  beanManager ...
}

Ahora, el truco es, usted necesitará tener una referencia a ese contexto es así, cuando se desea iniciar o detener, se puede. Eso sería algo como:

@Inject
protected HttpRequestLifecycle httpRequestLifecycle;

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

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

Esto debe hacerlo, no hay una gran cantidad de documentación por ahí, así que espero que esto ayude.

Cualquier persona interesada, echa un vistazo a la fuente aquí: http://github.com/walterjwhite/server.web.application

Walter

Otros consejos

Comprobar este artículo DZone: ámbitos personalizados en CDI 1.0 y 3.1 primavera (Mitad inferior)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top