![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
Привет.
У нас используется Tomcat 5.5 и требования к проекту такие, что время жизни сесси должно быть не ограниченным. Хотелось бы понять где хранятся сессии: все время в памяти или сохраняются на диск? Какими настройками возможно на это повлиять? P.S. А хорошая ли практика устанавливать бесконечное время жизни сессии? P.P.S. Еще один интересный вопрос: что происходит с сессиями при корректном останове томката? Всем спасибо за внимание. Буду ждать ответов. |
|||
|
||||
| Vofka |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 21.6.2006 Репутация: 1 Всего: 1 |
Время жизни сессии устанавливается в файле web.xml
Насколько я знаю сессия хранится в памяти и сделать время жизни бесконечным невозможно.Да и собственно для его делать бесконечным? Любой сервер приложений загнется от такой настройки. Если стоит 35 минут время жизни сессии это не значит что пользователь проработает 35 минут и сессия уничтожится это означает лишь то что если в течении 35 минут сессия бездействует то она будет уничтожена. |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
В спецификации сказано, что если session-timeout равен 0 или меньше, то это означает отсутствие таймаута, т.е. бесконечное время жизни сессии. Томкет при корректной остановке записывает текущие сессии на диск, а при старте восстанавливает их. Но чтобы эта фича корректно работала, все объекты в сессии должны быть сериализуемыми.
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
To AlexeyVorotnikov, спасибо. Про сохраниние сессий при останове я понял. А есть соображения по первому вопросу? Он для меня более важен.
|
|||
|
||||
| mbasil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Так AlexeyVorotnikov уже все сказал:
|
|||
|
||||
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
To mbasil, про настройку таймаута я знаю, вопрос не в этом.
Пример: я зашел на сайт, для меня создалась сессия и поработал на сайте к примеру 10 минут и закрыл браузер (не сессию). Т.к. у меня сессия бесконечна, то завтра открыв браузер с этой же сессией я продолжаю свою работу (Tomcat в этом промежутке времени не останавливался). Меня интресует где хранится сессия в промежутках между моей работой: все время висит в памяти или по какомуто хитрому алгоритму свопится на диск? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Сессия сериализуется обычно на диск, но это не тот случай - при повторном открытии браузера будет создана новая сессия. Поведение, аналогичное бесконечной сессии, можно реализовать только используя куки.
Это сообщение отредактировал(а) tux - 5.12.2007, 19:23 |
|||
|
||||
| COVD |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Есть лимит на количество открытых сессий и новые просто не создаются при его достижении. Но наверное можно сделать unlimited, задав setMaxActiveSessions(-1). Попробуйте. Если томкат сохраняет живые, но не активные сессии на диск для освобождения памяти, то ему надо при каждом запросе, для которого не найдена сессия в памяти, обращаться к диску. И только если и на диске не найдена, то создавать новую сессию. Это снизит производительность. А на диск сессии сохраняются и восстанавливаются при рестарте сервера или приложения, как было отмечено выше и написано здесь. По крайней мере, только такое поведение декларируется явно. Добавлено @ 19:37
Вообще бесконечная сессия - плохая затея. Это сообщение отредактировал(а) COVD - 5.12.2007, 20:08 |
||||
|
|||||
| bavar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 4.12.2005 Репутация: нет Всего: нет |
Всем спасибо, проблема решена.
Tomcat позволяет настроить сериализацию сессий на диск по истечении определенного интервала времени, при этом они все еще остаются активными. Как это настроить описано здесь. To COVD, у нас id сессии хранится в куках, так что пользователь будет работать всегда в одной сессий (разумеется если он в ручную не почистит их). |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Как правильно заметил AlexeyVorotnikov:
Так что, держи в уме, что работу этого механизма очень легко можно нарушить. Многие создатели фреймворков (и достаточно популярных, например icefaces) об этом забывают. Прикрутиш себе какую-нибудь модную удобную фичу в приложение, а она хлоп... и что-нибудь несериализируемое в сессию сует... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |