Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управление сессиями в Tomcat 5.5 
V
    Опции темы
bavar
Дата 5.12.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.12.2005

Репутация: нет
Всего: нет



Привет.

У нас используется Tomcat 5.5 и требования к проекту такие, что время жизни сесси должно быть не ограниченным. Хотелось бы понять где хранятся сессии: все время в памяти или сохраняются на диск? Какими настройками возможно на это повлиять?

P.S. А хорошая ли практика устанавливать бесконечное время жизни сессии?
P.P.S. Еще один интересный вопрос: что происходит с сессиями при корректном останове томката?

Всем спасибо за внимание. Буду ждать ответов.
PM MAIL   Вверх
Vofka
Дата 5.12.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 21.6.2006

Репутация: 1
Всего: 1



Время жизни сессии устанавливается в файле web.xml 
    
Код

   <session-config>
        <session-timeout>35</session-timeout>
    </session-config>  


Насколько я знаю сессия хранится в памяти и сделать время жизни бесконечным невозможно.Да и собственно для его делать бесконечным?
Любой сервер приложений загнется от такой настройки.


Если стоит 35 минут время жизни сессии это не значит что  пользователь проработает 35 минут и сессия уничтожится это означает лишь то что если в течении 35 минут сессия бездействует то она будет уничтожена.   
PM MAIL   Вверх
AlexeyVorotnikov
Дата 5.12.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 3
Всего: 18



В спецификации сказано, что если session-timeout равен 0 или меньше, то это означает отсутствие таймаута, т.е. бесконечное время жизни сессии. Томкет при корректной остановке записывает текущие сессии на диск, а при старте восстанавливает их. Но чтобы эта фича корректно работала, все объекты в сессии должны быть сериализуемыми.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
bavar
Дата 5.12.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.12.2005

Репутация: нет
Всего: нет



To AlexeyVorotnikov, спасибо. Про сохраниние сессий при останове я понял. А есть соображения по первому вопросу? Он для меня более важен.


PM MAIL   Вверх
mbasil
Дата 5.12.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Так AlexeyVorotnikov уже все сказал:
 
Код

   <session-config>
        <session-timeout>0</session-timeout>
    </session-config> 

PM MAIL   Вверх
bavar
Дата 5.12.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.12.2005

Репутация: нет
Всего: нет



To mbasil, про настройку таймаута я знаю, вопрос не в этом. 
Пример: я зашел на сайт, для меня создалась сессия и поработал на сайте к примеру 10 минут и закрыл браузер (не сессию). Т.к. у меня сессия бесконечна, то завтра открыв браузер с этой же сессией я продолжаю свою работу (Tomcat в этом промежутке времени не останавливался). Меня интресует где хранится сессия в промежутках между моей работой: все время висит в памяти или по какомуто хитрому алгоритму свопится на диск?

PM MAIL   Вверх
tux
Дата 5.12.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Сессия сериализуется обычно на диск, но это не тот случай - при повторном открытии браузера будет создана новая сессия. Поведение, аналогичное бесконечной сессии, можно реализовать только используя куки.

Это сообщение отредактировал(а) tux - 5.12.2007, 19:23
PM MAIL Skype GTalk Jabber YIM   Вверх
COVD
Дата 5.12.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

Меня интресует где хранится сессия в промежутках между моей работой: все время висит в памяти или по какомуто хитрому алгоритму свопится на диск?


Есть лимит на количество открытых сессий и новые просто не создаются при его достижении. Но наверное можно сделать unlimited, задав setMaxActiveSessions(-1). Попробуйте. Если томкат сохраняет живые, но не активные сессии на диск для освобождения памяти, то ему надо при каждом запросе, для которого не найдена сессия в памяти, обращаться к диску. И только если и на диске не найдена, то создавать новую сессию. Это снизит производительность. 

А на диск сессии сохраняются и восстанавливаются при рестарте сервера или приложения, как было отмечено выше и написано здесь. По крайней мере, только такое поведение декларируется явно.

Добавлено @ 19:37
Цитата

при повторном открытии браузера будет создана новая сессия
 если либо куки были удалены при закрытии браузера (их срок хранения так был задан) либо к моменту повторного открытия была удалена сессия на сервере. Вроде так.

Вообще бесконечная сессия - плохая затея.

Это сообщение отредактировал(а) COVD - 5.12.2007, 20:08
PM MAIL   Вверх
bavar
Дата 6.12.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.12.2005

Репутация: нет
Всего: нет



Всем спасибо, проблема решена.  smile 
Tomcat позволяет настроить сериализацию сессий на диск по истечении определенного интервала времени, при этом они все еще остаются активными. Как это настроить описано здесь.

To COVD, у нас id сессии хранится в куках, так что пользователь будет работать всегда в одной сессий (разумеется если он в ручную не почистит их).
PM MAIL   Вверх
Maksym
Дата 6.12.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Цитата(bavar @  6.12.2007,  11:39 Найти цитируемый пост)
Tomcat позволяет настроить сериализацию сессий на диск по истечении определенного интервала времени, при этом они все еще остаются активными. Как это настроить описано здесь.

Как правильно заметил AlexeyVorotnikov:
Цитата(AlexeyVorotnikov @  5.12.2007,  14:03 Найти цитируемый пост)
Но чтобы эта фича корректно работала, все объекты в сессии должны быть сериализуемыми. 

Так что, держи в уме, что работу этого механизма очень легко можно нарушить. Многие создатели фреймворков (и достаточно популярных, например icefaces) об этом забывают.
Прикрутиш себе какую-нибудь модную удобную фичу в приложение, а она хлоп... и что-нибудь несериализируемое в сессию сует... smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.