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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage