Nur ein Zweifel darüber, wie JSF-Session-Management arbeitetSpeichert JSF meine Hilfsklasse, auf die auch in meiner ManageBean in der Sitzung verwiesen wird?
bekam ich ein managedbean wie:
@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean implements Serializable
{
private String userName;
//getter and setter
private String password;
//getter and setter
// Getting through spring injection
@ManagedProperty(value="#{userBO}")
private UserBO userBO;
//setter method
public fetchUserDetails(){
User user = userBO.getUSer(this.userName);
//some processing
}
// more methods
.
.
.
}
seit So, jetzt die Bohne ist sessionScoped, JSF meine "userBO" auch in der Session-Objekt halten? Ich glaube, dass Variablen mit den Setter und Getter wahrscheinlich in der Sitzung gespeichert werden. Korrigiere mich, wenn ich falsch liege. Oder muss ich "userBO" als transient deklarieren, so dass es ignoriert wird?
Session Persistence ist Server abhängig ist, und ich wounldn't dass steuern möchten. Also meinst du, mein userBO ist auch sessionScoped? Das ist schlecht:/ – Akshat
Sitzungsobjekte unterscheiden sich in dieser Hinsicht nicht von anderen Objekten in der VM. Harte Referenzen bedeuten, dass Objekte nicht als Müll gesammelt werden können. Vielleicht können Sie 'userBO' auf null setzen, nachdem Sie damit fertig sind (siehe auch '@ PostConstruct'.) Oder Sie müssen Ihr Bean-Design erneut aufrufen, wenn Objekte außerhalb des Gültigkeitsbereichs geleakt werden - Sie könnten ein Request-Scope-Objekt verwenden um Ihr Session-Scope-Objekt mit 'userBO' zu füllen. – McDowell
Danke, ich vermutete das gleiche. Anscheinend ist die beste Option, die ich hier sehe, meine ManagedBeans als requestScoped zu machen und meine Session-Objekte manuell zu setzen:/ – Akshat