Me pregunto cómo funciona la aplicación de los diferentes ámbitos de frijol en CDI (@ApplicationScoped
, @SessionScoped
y @RequestScoped
). Entiendo el ciclo de vida, pero ¿dónde están almacenados en el contenedor? Estoy usando estas anotaciones en beans JSF.¿Cómo funcionan los diferentes ámbitos de beans en el servidor?
Cómo se almacenan estos granos en el servidor y cómo es capaz el servidor de saber qué granos pertenecen a quién.
por ejemplo, es un grano que tiene un @SessionScoped
almacenada en el HTTPSession
objeto detrás de las escenas? ¿Los beans con @ApplicationScoped
se almacenan en una variable de instancia de mapa en ServletContext
? Si es así, ¿qué pasa con la seguridad del hilo? Supongo que lo he entendido mal, pero sería genial si alguien pudiera enseñarme qué sucede, dónde se almacenan (los diferentes ámbitos), cómo es capaz el servidor de saber a qué granos pertenece quién ... como si hubiera otros identificadores. (no solo identificación de sesión)?
Estoy por cierto usando Java EE 6 todas las implementaciones de referencia.
Ok, entonces no hay más "hocus pocus" que :) Pero, entiendo que '@ ApplicationScoped' AKA ServletContext no es peligroso porque varios clientes podrían intentar cambiarlo al mismo tiempo ... pero ¿Por qué no es seguro el subproceso '@ SessionScoped'? ¿No es solo un cliente el que tiene acceso al mismo bean? – LuckyLuke
Para 'SessionScoped' prácticamente no hay límite de cuántas solicitudes pueden acceder simultáneamente. Por supuesto, todos provienen del mismo cliente. Piensa en múltiples ventanas, múltiples pestañas o múltiples solicitudes AJAX provenientes de la misma ventana. –
Ok, entonces mencionaste si un bean es intrínsecamente seguro para subprocesos como los EJB (algunos tipos al menos) ... entonces quieres decir que se mantiene como una propiedad de un frijol usado en JSF ¿verdad? – LuckyLuke