Pasivación de Managed Bean con ámbito de sesión
-
12-11-2019 - |
Pregunta
Estoy leyendo sobre JSF2 y Managed Beans.Tengo una pregunta relacionada con la pasivación.
Recientemente solicité diferentes casos de uso de @Stateful
EJB, @SessionScoped
y @ManagedBean
aquí:
Bean administrado con ámbito de sesión vs ejb con estado.
Ahora, los EJB con estado son elegibles para pasivación y activación, lo que les permite pasivarse temporalmente en almacenamiento persistente para disminuir el uso de memoria cuando están inactivos. No he visto esta característica disponible para los beans administrados.Entonces me hizo pensar que tal vez debería optar por @RequestScoped
Beans administrados y preferidos @Stateful
En su lugar, EJB para carritos de compras, etc.Usando @Sessionscoped
Beans administrados solo para almacenar información mínima del usuario.
¿Es esto correcto?¿Existen algunas pautas para esto?
Solución
Un bean administrado con ámbito de solicitud no funcionaría aquí.Para acceder a una instancia particular de bean de sesión con estado, necesita su código auxiliar.
Si utilizara beans administrados con ámbito de solicitud, no habría lugar para almacenar este código auxiliar y obtendría una nueva instancia con cada solicitud.Esto supera por completo la razón para utilizar beans de sesión con estado en primer lugar.
Sin embargo, podría utilizar un bean administrado JSF con ámbito de vista (si la acción tiene lugar en una sola página) o un bean CDI con ámbito de conversación (si la acción tiene lugar en varias páginas).Especialmente con este último, puede vincular el alcance de su conversación con la vida útil del bean de sesión con estado.
Tenga en cuenta que todo esto requiere al menos un conocimiento intermedio de Java EE.Si no tiene cuidado con la pasivación de beans de sesión con estado (p. ej.nunca llame a un método anotado @Remove) gradualmente consumirá el espacio del disco duro de su servidor.