Работает ли область действия Grails для нескольких экземпляров сервера?

Мы добавили весеннюю сессию в наше приложение Grails 3 и перестали отображаться флеш-сообщения / ошибки. Глядя на источник, он выглядит так, как будто это просто карта в памяти, хотя я не уверен, что она будет сериализована при сохранении сеансов:

https://github.com/grails/grails-core/blob/master/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsFlashScope.java#L45

Мне интересно, работает ли flash flash только при запуске одного экземпляра, который управляет сессиями, или, например, если в кластере tomcat с несколькими экземплярами и без привязки к сеансу flash flash все еще будет работать?

2 ответа

Решение

Spring-session в настоящее время не допускает изменения объектов сеанса по соображениям производительности. Однако вы можете сохранить его самостоятельно, используя простой фильтр - или использовать плагин grails для весенней сессии.

Я лично использую зависимость Spring-сессии и беру фильтр HttpSessionSynchronizer из плагина - использовал его, так как это единственная часть, необходимая для работы флэш-памяти с Spring-сессии.

Область действия Flash зависит от конкретного экземпляра и не работает с несколькими экземплярами сервера без использования соответствия сеанса.

Другие вопросы по тегам