Это, вероятно, не будет соответствовать вашим потребностям, нет.Есть две принципиальные проблемы со встроенной реализацией:
Она не поддерживает просмотр с вкладками.Если пользователь загружает один и тот же экран на нескольких вкладках браузера, две вкладки, обращающиеся к одному контроллеру, собираются заглушить данные атрибутов сеанса друг друга.
Если пользователи не следуют вашему «запланированному»навигационный путь, по которому setComplete()
вызов будет пропущен, и объект будет зависать бесконечно, пока не закончится сеанс и не будет очищен.
Номер 1 может или не может быть проблемой в зависимости от того, как разработано ваше приложение и что оно делает.(некоторые вещи, например, Банки, в любом случае намеренно мешают использованию нескольких вкладок) Но большинство пользователей, я думаю, ожидают, что смогут редактировать профиль пользователя А на одной вкладке и профиль пользователя Б на другой вкладке и не будут отправлять одну форму, нарушая другую.screen.
Номер 2, который вы можете обойти, всегда отправляя экран в собственный контроллер, а затем перенаправляя его после очистки, но это большая работа, если вы еще этого не делаете.
Хорошая новость в том, что org.springframework.web.bind.support.SessionAttributeStore
является признанной точкой расширения!Вы можете предоставить любую реализацию того, что вам нравится, и добавить ее в свой сервлет-диспетчер.Вам даже не нужно использовать веб-сессию для хранения информации, если вы хотите избежать раздувания ее с бизнес-объектами.Вы можете поместить это фактическое хранилище в бэкэнд-терракотовый кластер, например, и не беспокоиться о его совместимости с вашей стратегией кластеризации.
-
И тогда всегда есть опция Gamma, если вам действительно нужноистинная масштабируемость: переделайте ее в стратегию RESTful, которая в первую очередь не зависит от состояния сервера:)