with passing parameter pages outcome getrequestparametermap getexternalcontext getcurrentinstance bean java serialization jsf

java - passing - JSF bean de respaldo debe ser serializable?



jsf outcome with parameters (3)

Los beans que usan el ámbito de la sesión, la aplicación o la conversación deben ser serializables, pero los beans que usan el alcance de la solicitud no tienen que ser serializables. Fuente: https://docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html

Recibo estos mensajes:

[# | 2010-07-30T11: 28: 32.723 + 0000 | ADVERTENCIA | glassfish3.0.1 | javax.faces | _ThreadID = 37; _ThreadName = Thread-1; | Establecimiento de valor de atributo no serializable en ViewMap: (clave: MyBackingBean, clase de valor: foo.bar.org.jsf.MyBackingBean) | #]

¿Significa esto que mis beans de respaldo JSF deberían implementar Serializable? ¿O están refiriéndose a algún otro problema?


Sí, Backing Beans / Managed Beans básicamente persiguen el estado de la vista, por lo que se debe implementar la serialización, pero los UI Components pueden no permitir que sea serializable y JSF Runitime le mostrará un mensaje de error / advertencia. Una cosa que puede hacer es marcar dicho componente transitorio en sus MBeans.

Gracias.


Sí, lo entendiste correctamente. La vista se almacena básicamente en el ámbito de la sesión. El alcance de la sesión está en JSF respaldado por la HttpSession del Servlet. Se supone que todos los atributos de sesión implementan Serializable , esto porque el servletcontainer medio puede persistir datos de sesión en disco duro entre otros para poder compartir con otros servidores en un clúster, o para sobrevivir a una gran carga, o reactivar sesiones durante el reinicio del servidor.

El almacenamiento de objetos Java en bruto en el disco duro solo es posible si la clase respectiva implementa Serializable . A continuación, ObjectOutputStream se puede utilizar para escribirlos en el disco duro y ObjectInputStream para leerlos desde el disco duro. El servletcontainer maneja todo de forma transparente, en realidad no necesita preocuparse por eso. JSF solo está dando una advertencia para que comprenda los riesgos.