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?
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.
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