web-dev-qa-db-fra.com

Haricot de soutien JSF devrait être sérialisable?

Je reçois ces messages:

[# | 2010-07-30T11: 28: 32.723 + 0000 | AVERTISSEMENT | glassfish3.0.1 | javax.faces | _ThreadID = 37; _ThreadName = Thread-1; | Setting valeur d'attribut non sérialisable dans ViewMap: (clé: MyBackingBean, valeur Classe: Foo.bar.org.jsf.MyBackingBean) | #]

Cela signifie-t-il que mon support JSF doit implémenter Serializable? Ou font-ils référence à un autre problème?

39
egbokul

Oui, vous l'avez bien compris. La vue est essentiellement stockée dans l'étendue de la session. L'étendue de la session se trouve dans JSF et s'appuie sur le paramètre HttpSession du servlet. Tous les attributs de session sont supposés implémenter Serializable , ceci parce que le conteneur moyen de servlet peut conserver les données de session sur un disque dur, entre autres, afin de pouvoir partager avec d'autres serveurs d'un cluster, de survivre à une charge importante ou de réactiver des sessions sur un serveur redémarrer. 

Le stockage d'objets Java bruts sur le disque dur n'est possible que si la classe respective implémente Serializable. Ensuite, ObjectOutputStream peut être utilisé pour les écrire sur le disque dur et ObjectInputStream pour les lire à partir du disque dur. Le servletcontainer gère tout cela de manière transparente, vous n'avez en fait pas à vous en soucier. JSF vous avertit simplement pour que vous compreniez les risques.

63
BalusC

Les beans qui utilisent une étendue de session, d'application ou de conversation doivent être sérialisables, mais ils ne doivent pas nécessairement être étendus à la demande . Source: https://docs.Oracle.com/javaee/6/tutorial/ doc/gjbbk.html

0
user2823705