Интересная ситуация и хороший вопрос.
Как правило, из того, что я видел в корпоративных средах, сеансы обычно завершаются после развертывания новой версии веб-приложения - так как в любом случае это новое развертывание, приложениеСервер обычно не знает разницы между новым приложением и новой версией.Я не думаю, что было бы хорошей идеей, если бы серверы сохраняли сеансы, поскольку это может быть просто совершенно другое приложение, для которого у пользователя могут отсутствовать какие-либо разрешения на доступ и т. Д., Так что это может быть проблемой безопасности.
Однако давайте предположим, что сеансы будут сохраняться и могут быть восстановлены даже для новых развертываний.То, как вы описываете, звучит почти правильно, вы также можете сделать это немного сложнее, например, проверить, есть ли в сеансе старые объекты, которые необходимо преобразовать (или снова загрузить из базы данных) в зависимости от их версии.В Java вы бы очень старались, чтобы ваши классы были двоично-совместимыми, поэтому новая версия приложения все еще может десериализовать его.Вот для чего предназначены writeObject / readObject.
Другая идея - сохранить «сеанс» в вашем собственном формате данных в базе данных и использовать сеанс только для легких данных, таких как аутентификация пользователя и собственный идентификатор сеанса приложения,Я никогда не видел такого в Java-приложении, но он позволяет делать то, что вы хотите, и выполнять шаги миграции во время развертывания для переноса данных в новый формат.Вместе с файлами cookie для автоматического входа и запоминания ваши пользователи не увидят никакой разницы.