JSF bean de respaldo debe ser serializable?

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í, lo entendiste correctamente. La vista se almacena básicamente en el ámbito de la sesión. El scope 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.

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 scope de la solicitud no tienen que ser serializables. Fuente: https://docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html

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.