JSF - Die Session-Scoped-Managed-Bean hat keine Abhängigkeiten, die bei der Deserialisierung der Sitzung neu eingefügt wurden.
Ich bin mir nicht sicher, ob das, was ich tue, falsch ist oder ob ich irgendwo eine Anmerkung oder ein Konfigurationselement verpasst habe. Hier ist die Situation:
Ich habe eine JSF-Anwendung mit einer Bean mit Sitzungsbereich namensSessionData
. Diese Bean hat eine anwendungsspezifische Bean-Referenz (vom TypApplicationData
) bei der Erstellung eingespritzt. Dies funktioniert einwandfrei, wenn die Sitzung zum ersten Mal erstellt wird. Die Abhängigkeitsinjektion erfolgt mit<managed-bean>
Elemente imfaces-config.xml
Datei wie hier gezeigt:
<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>
Weil es keinen Sinn macht, mein @ zu habSessionData
Objekt enthält dasApplicationData
Objekt, wenn es serialisiert ist, habe ich das @ markieApplicationData
Referenz als transient in meinemSessionData
Objekt
transient private ApplicationData applicationData;
All funktioniert so lange, bis die Webanwendung gestoppt wird (in meinem Tomcat 6.x-Container) und die Sitzungen serialisiert werden. Wenn ich die Anwendung neu starte und die Sitzungen deserialisiert werden, wird mein Verweis aufApplicationData
wird von JSF nicht erneut injiziert. Ich weiß, dass die Deserialisierung vorübergehende Felder ohne Wert hinterlassen soll. Gibt es eine Möglichkeit, JSF zu signalisieren, dass für dieses Objekt mit Sitzungsbereich die Abhängigkeiten nach der Deserialisierung erneut festgelegt werden müssen?
Ich verwende MyFaces JSF 1.2 und Tomcat 6.0.26 als Webanwendungscontainer.