Веб-приложение Tomcat - сохранение объектов в виде определенных пользователем объектов или простых идентификаторов для сохранения пользовательских сеансов при перезагрузке сервера?

Допустим, у нас есть веб-приложение, поддерживаемое механизмом / контейнером сервлетов, таким как Tomcat. Пользователь входит в систему. Запись в базе данных для этого пользователя (представленная, скажем, экземпляром класса User) загружена, и мы можем сохранить ее как атрибут сеанса с ключом «currentUser», установить его один раз и использовать для обрабатывать последующие запросы. Кроме того, мы помещаем больше объектов в атрибут сеанса. Довольно простые вещи.

Теперь, если нам нужно развернуть новый код и перезагрузить Tomcat ... Пользовательские сеансы остаются нетронутыми после перезагрузки (восстановлены с диска / db) , пока мы не меняем ничего классов, экземпляры которых хранятся в пользовательской сессии . Но это большая проблема. Я не хочу, чтобы пользователи теряли свои сеансы при выпуске нового кода.

Чтобы обойти эту проблему, Я полагаю, что могу хранить в объекте сеанса только экземпляры классов, которые, как предполагается, никогда не меняются (например, сохранение идентификатора вошедшего в систему пользователя как целого числа, а не экземпляра класса User). Тогда я бы никогда не столкнулся с проблемой невозможности десериализации объекта сеанса при перезагрузке. Но это немного усложняет ситуацию, поскольку теперь мне нужно использовать идентификатор для загрузки фактического объекта из базы данных и т. Д. (А при кешировании снижение производительности на самом деле не проблема).

Это то, что обычно делается для обхода эта проблема?

5
задан n00b 11 May 2011 в 22:16
поделиться