Я получаю эти сообщения:
[# | 2010-07-30T11:28:32.723+0000|WARNING|glassfish3.0.1|javax.faces | _ ThreadID=37; _ThreadName=Thread-1; |Setting несериализуемое значение атрибута в ViewMap: (ключ: MyBackingBean, класс значения: foo.bar.org.jsf. MyBackingBean) | #]
Они означают, что мой JSF отступающие бобы должен реализовать сериализуемый? Или они обращаются к некоторой другой проблеме?
Да, вы правильно поняли. Представление в основном хранится в области сеанса. Область сеанса находится в JSF, поддерживаемом HttpSession сервлета
. Все атрибуты сеанса должны реализовывать Serializable
, потому что средний контейнер сервлетов может сохранять данные сеанса на жестком диске, среди прочего, чтобы иметь возможность делиться с другими серверами в кластере, или выдерживать большую нагрузку, или восстанавливать сеансы. во время перезапуска сервера.
Сохранение необработанных объектов Java на жестком диске возможно только в том случае, если соответствующий класс реализует Serializable
. Затем ObjectOutputStream
можно использовать для записи их на жесткий диск и ObjectInputStream
для чтения их с жесткого диска. Сервлетконтейнер управляет всем этим прозрачно, вам на самом деле не нужно об этом беспокоиться. JSF просто предупреждает, чтобы вы понимали риски.