JSF: el bean gestionado con ámbito de sesión no tiene dependencias reinyectadas en la deserialización de sesión
No estoy seguro de si lo que estoy haciendo está mal, o si simplemente me perdí una anotación o un elemento de configuración en alguna parte. Aquí está la situación:
Tengo una aplicación JSF con un bean de ámbito de sesión llamadoSessionData
. Este bean tiene una referencia de bean de ámbito de aplicación (de tipoApplicationData
) inyectado en él en el momento de la creación. Esto funciona bien cuando se crea la sesión por primera vez. La inyección de dependencia se realiza con<managed-bean>
elementos en elfaces-config.xml
archivo como se muestra aquí:
<managed-bean>
<managed-bean-name>sessionData</managed-bean-name>
<managed-bean-class>my.package.SessionData</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>applicationData</property-name>
<property-class>my.package.ApplicationData</property-class>
<value>#{applicationData}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>applicationData</managed-bean-name>
<managed-bean-class>my.package.ApplicationData</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
Porque no tiene sentido tener miSessionData
objeto incluye elApplicationData
objeto cuando se serializa, he marcado elApplicationData
referencia como transitoria en miSessionData
objeto:
transient private ApplicationData applicationData;
Todo está bien hasta que la aplicación web se detiene (en mi contenedor Tomcat 6.x) y las sesiones se serializan. Cuando reinicio la aplicación y las sesiones se deserializan, mi referencia aApplicationData
no es reinyectado por JSF. Sé que se supone que la deserialización deja campos transitorios sin un valor.¿Hay alguna manera de indicarle a JSF que este objeto con ámbito de sesión requiere que sus dependencias se establezcan nuevamente después de la deserialización?
Estoy usando MyFaces JSF 1.2 y Tomcat 6.0.26 como mi contenedor de aplicaciones web.