2012-02-12 3 views
4

Поскольку у меня нет глубоких знаний о реализации весеннего сеанса. Может кто-нибудь, пожалуйста, скажите мне, целесообразно ли использовать фасоль Spring Session, где объект HttpSession очень важен. Как веб-приложение, где тысячи пользователей одновременно получают доступ к сайту.Является ли Spring-сессионным бобом сохраненным в HttpSession?

Является ли весенний сеанс бобами сохранен в объекте HttpSession?

Или, даже если объект HttpSession относится только к компоненту, включенному в весеннюю сессию, неужели мы не делаем объект сеанса тяжелым?

Как это другая форма хранения любого компонента непосредственно в объекте HttpSession (что делает объект HttpSession тяжелой точкой зрения)?

Спасибо в продвинутом состоянии.

ответ

3

Объект не хранится в HTTP-сеансе. Он связан с идентификатором сеанса и фактически хранится внутри контекста Spring. Слушатель сеанса используется для очистки экземпляров после закрытия сеанса. См. SessionScope JavaDoc.

+1

Я не уверен, что вы ошибаетесь или нет, (и я так устал, чтобы перейти к источникам Spring прямо сейчас), но как насчет репликации сеанса в кластере? Мне трудно поверить в то, как работает Весна! –

+2

Глядя на источник Весны, это не кажется точным. Контейнеры с сессией * * фактически хранятся внутри самого объекта HttpSession. 'SessionScope' в конечном итоге заканчивается вызовом' ServletRequestAttributes.setAttribute() '. – Eric

1

Вот что говорят пружинные документы:

Области применения единого определения боб для жизненного цикла HTTP сессии. Действует только в контексте веб-контекста Spring ApplicationContext.

"Heavy"? Не тяжелее, чем объект, который вы вкладываете в него. Сеансы должны иметь конечный срок службы. Несколько кбайт за сеанс не будут в конце вашего приложения. Простой расчет количества одновременных сеансов и требований к памяти объектов должен заверить вас в настройках памяти вашего сервера приложений. При необходимости вы всегда можете увеличить минимальную и максимальную память.

Хранение вещей в сеансе HTTP происходит одинаково, независимо от того, являетесь ли вы компонентом Spring или нет. Фабричная фабрика просто делает некоторые дополнительные вещи, чтобы помочь вам управлять жизненным циклом объекта.

0

Является ли весенний сеанс фазой, сохраненной в объекте HttpSession?

Если объект HttpSession, о котором вы упомянули здесь, фактически предоставлен весной-сессией (весенняя сессия обертывает объект httpSession в исходном httpRequest), ответ будет ДА ​​-> действительно, все факсимированные объекты весенней сессии сохраняются в httpSession, предоставленный весной-сессией в качестве атрибутов.

Или, даже если объект HttpSession относится только к фасоли, включенному в весеннюю сессию, неужели мы не делаем объект сеанса тяжелым?

№ «Тяжесть» httpSession очень сильно зависит от объектов, которые вы вставляете. В дополнение к этому сеансовые бобы должны быть эфемерными. И последнее, но не менее важное: объект сеанса в мире микроуслуг обычно выгружается в автономный магазин, например, Redis или HazelCast. Таким образом, это не будет считаться «тяжелым» с точки зрения потребления памяти.

Как это различная форма хранения любого компонента непосредственно в объекте HttpSession (что делает объект HttpSession тяжелой точкой зрения)?

Никакой разницы вообще (при условии, что вы используете весеннюю сессию), так как все все фасонные объекты весенней сессии сохраняются в httpSession, предоставляемом пружинной сессией в качестве атрибутов.

Смежные вопросы