web-dev-qa-db-de.com

JSF Backing Bean sollte serialisierbar sein?

Ich erhalte folgende Nachrichten:

[# | 2010-07-30T11: 28: 32.723 + 0000 | WARNUNG | glassfish3.0.1 | javax.faces | _ThreadID = 37; _ThreadName = Thread-1; | Festlegen eines nicht serialisierbaren Attributwerts in ViewMap: (Schlüssel: MyBackingBean, Werteklasse: foo.bar.org.jsf.MyBackingBean) | #]

Bedeuten diese, dass meine JSF-Backing-Beans Serializable implementieren sollten? Oder beziehen sie sich auf ein anderes Problem?

39
egbokul

Ja, du hast es richtig verstanden. Die Ansicht wird grundsätzlich im Sitzungsbereich gespeichert. Der Sitzungsbereich wird in JSF durch die HttpSession des Servlets unterstützt. Alle Sitzungsattribute sollen Serializable implementieren. Dies ist darauf zurückzuführen, dass der durchschnittliche Servletcontainer Sitzungsdaten unter anderem auf einer Festplatte speichern kann, um sich mit anderen Servern in einem Cluster zu teilen oder schwere Last zu überstehen oder Sitzungen während des Servers zu überleben Neustart. 

Das Speichern von Java-Rohobjekten auf Festplatte ist nur möglich, wenn die entsprechende Klasse Serializable implementiert. Dann kann ObjectOutputStream verwendet werden, um sie auf die Festplatte zu schreiben, und ObjectInputStream , um sie von der Festplatte zu lesen. Der Servletcontainer verwaltet das alles transparent, Sie müssen sich nicht darum kümmern. JSF gibt nur eine Warnung aus, damit Sie die Risiken verstehen.

63
BalusC

Beans, die Sitzung, Anwendung oder Konversationsbereich verwenden, müssen serialisierbar sein, Beans, die den Anforderungsbereich verwenden, müssen jedoch nicht serialisierbar sein. Quelle: https://docs.Oracle.com/javaee/6/ Tutorial/doc/gjbbk.html

0
user2823705