Объект, который я сохраняю в сеансе, — это LocalizationContext
, который не сериализуем, а мой Tomcat — 5.5.28, а сервер qa — Tomcat 5.5.30. Это из документации Tomcat:
Всякий раз, когда Catalina нормально закрывается и перезапускается, или когда запускается перезагрузка приложения, стандартная реализация Manager попытается сериализовать все текущие активные сеансы в файл на диске, расположенный через атрибут pathname. Все такие сохраненные сеансы затем будут десериализованы и активированы (при условии, что они не истекли за это время), когда перезагрузка приложения будет завершена.
Чтобы успешно восстановить состояние атрибутов сеанса, все такие атрибуты ДОЛЖНЫ реализовывать интерфейс java.io.Serializable. Вы МОЖЕТЕ заставить менеджера применить это ограничение, включив элемент
<distributable>
в дескриптор развертывания вашего веб-приложения (/WEB-INF/web.xml).
Это заставляет меня думать, что это должно сломаться и на моем локальном компьютере, и что вы никогда не сможете сохранить атрибут сеанса в Tomcat, если он не реализует Serializable
.
ИЗМЕНИТЬ:
Извините, чтобы быть более ясным, мой вопрос двоякий. Должны ли все атрибуты сеанса быть сериализуемыми, и если да, то почему они все еще могут работать в моей локальной среде?