Вход на сайт
Вопросик из области Web-Programmierung, Java
5645 просмотров
Перейти к просмотру всей ветки
в ответ MrSanders 10.09.15 14:15
Даже если сервлет "окончил работу" сессия не исчезает.
-----
Исчезает та копия с которой он работал. Остается - та, которая была загружена на аппсервер. В данном случае - ТомКат.
Вообще сервлет не должен перезапускаться. Он должен инициализироваться один раз.
-----
Инстанцируется (или клонируется) при получении запроса. Основание - <HTTP>-протокол есть <state less> протокол
- каждый запрос обрабатывается независимо от предыдущих/других/следующих.
В одиночном томкате сессия простой объект класса HttpSession.
------
Ну начнем с того, что:
- а. у аппсервера не одна <HttpSession>, а набор/коллекция...
- б. коллекция - именно у аппсервера, а не у отдельная сессия у сервлета...
- в. инстансе сервлета работает с копией/клоном сессии хранимой аппсервером.
Просто протестируй - там элементарно все проверяется.
Сохранять сессию имеет смысл только для обмена ею с другими приложениями / вебконтейнерами.
------
Тяжело.
Остается только спросить - что будет при многократных, до окончания выполнения, запросах (и запусках)
сервлета и хранении в сессиях каких-то промежуточных данных? Ну скажем запрет на повторный вход в
контекстно-критическую секцию кода... при условии, что она критична только для данной копии сервлета.
Как будешь разгребать? Ответ - никак - у тебя нет доступа к другому инстансу. Почему этой проблемы нет?
Да потому что копия сессии у каждого своя. А оригинал - у аппсервера.
-----
Исчезает та копия с которой он работал. Остается - та, которая была загружена на аппсервер. В данном случае - ТомКат.
Вообще сервлет не должен перезапускаться. Он должен инициализироваться один раз.
-----
Инстанцируется (или клонируется) при получении запроса. Основание - <HTTP>-протокол есть <state less> протокол
- каждый запрос обрабатывается независимо от предыдущих/других/следующих.
В одиночном томкате сессия простой объект класса HttpSession.
------
Ну начнем с того, что:
- а. у аппсервера не одна <HttpSession>, а набор/коллекция...
- б. коллекция - именно у аппсервера, а не у отдельная сессия у сервлета...
- в. инстансе сервлета работает с копией/клоном сессии хранимой аппсервером.
Просто протестируй - там элементарно все проверяется.
Сохранять сессию имеет смысл только для обмена ею с другими приложениями / вебконтейнерами.
------
Тяжело.
Остается только спросить - что будет при многократных, до окончания выполнения, запросах (и запусках)
сервлета и хранении в сессиях каких-то промежуточных данных? Ну скажем запрет на повторный вход в
контекстно-критическую секцию кода... при условии, что она критична только для данной копии сервлета.
Как будешь разгребать? Ответ - никак - у тебя нет доступа к другому инстансу. Почему этой проблемы нет?
Да потому что копия сессии у каждого своя. А оригинал - у аппсервера.