Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Допустимый объём данных в сессии


Автор: Cyclone 23.11.2009, 00:09
Добрый день, господа и дамы.
Интересует некий принципиальный вопрос... а именно использование sessionScope при работе с многопользовательской web-системой.

Во-первых, подтвердите, пожалуйста, что Солнце действительно восходит на востоке:
1. Объект Session хранится в памяти сервера, не клиента - верно?
2. Объект сервлета создаётся для каждого обратившегося пользователя - сервлеты ... (как это по-русски? безопасны в многопользовательской среде) ... thread-safe - верно?
2. Объекты в sessionScope обладают thread-safity - наличие множества пользователей не должно привести к путанице в объектах - верно?
3. Session bean - обычный POJO, хранящийся в sessionScope - верно?

Есть ли какие-то разумные границы объёма хранения данных в сессии?
Я не говорю о мегабайтовых бинарниках, конечно. А в текстовых данных можно чувствовать себя свободно?

Ситуация, в общем, обычная. Зашли через сервлетик на страничку, получили там из базы всякие связанные списки, отобразили на страничке.
Дальнейшая работа включает использование полученной информации на других страницах - не получать же их из базы заново, верно?
Как обычно поступают в таких случаях - хранят объекты списков в session бине?

... ещё придумаю.
Нужно подтверждение того, что мыслю я в правильном направлении.
Развёрнутые комменты приветствуются.

Спасибо.

Автор: powerOn 23.11.2009, 09:06
Цитата(Cyclone @  23.11.2009,  00:09 Найти цитируемый пост)
Есть ли какие-то разумные границы объёма хранения данных в сессии?
Я не говорю о мегабайтовых бинарниках, конечно. А в текстовых данных можно чувствовать себя свободно?


Объем данных хранимых в сессии ограничен по самый OutOfMemoryException. Т.е. не безграничен. Отсюда вывод, что всегда найдется такое количество открытых сессий что бы сервер начал "пробуксовывать". Поэтому, чем меньше данных в сессии тем лучше. По крайней мере вы должны уметь ограничивать размер сессионных данных для пользователя.  В лучшем случае, если в сессии вообще нет бизнес данных. В идеале - полностью stateless обработка запросов.

Автор: polosatij 23.11.2009, 13:41
Цитата(powerOn @  23.11.2009,  08:06 Найти цитируемый пост)
 В лучшем случае, если в сессии вообще нет бизнес данных. В идеале - полностью stateless обработка запросов.



такой вопрос: в некоторых случаях, например, переходах между сайтами и проблемы реализации"Back" в браузере требуют определённых объектов в сессии. в них сохраняются не только откуда пришёл пользователь, но ещё и кое-какая информация в объекте в сессии, если всё же был нажать "Back".

как вы реализуете эту траблу? smile

Автор: powerOn 23.11.2009, 14:10
Цитата(polosatij @  23.11.2009,  13:41 Найти цитируемый пост)
такой вопрос: в некоторых случаях, например, переходах между сайтами и проблемы реализации"Back" в браузере требуют определённых объектов в сессии. в них сохраняются не только откуда пришёл пользователь, но ещё и кое-какая информация в объекте в сессии, если всё же был нажать "Back".

как вы реализуете эту траблу? smile 


Если возможности отказаться от сессионных данных нет, то нужно их использовать. Я просто хочу сказать, что чем меньше вы используете сессию тем лучше. Это не означает, что использование сессионных данных является антипаттерном.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)