Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Вопросик из области Web-Programmierung, Java

10.09.15 15:48
Re: Вопросик из области Web-Programmierung, Java
 
MrSanders старожил
в ответ Murr 10.09.15 14:53, Последний раз изменено 10.09.15 15:54 (MrSanders)
В ответ на:
Исчезает та копия с которой он работал. Остается - та, которая была загружена на аппсервер. В данном случае - ТомКат.

Чушь. Это один и тот же явовский объект. Вебконтейнер теоретически может создавать новый объект (клон) HttpSession с теми же данными для нового запроса, но так как параллельные запросы для одной и той же сесстии достаточно редкая вещь то вряд ли хоть кто-то такое делает. Я не знаю ни одного сервлет-контейнера создающего копии сессии для каждого запроса.
В ответ на:
Инстанцируется (или клонируется) при получении запроса.

Нет. RTFM. Сервлет - синглтон (если ручками не поломать это поведение). Один и тот же объект используется разными потоками.
В ответ на:
Основание - <HTTP>-протокол есть <state less> протокол - каждый запрос обрабатывается независимо от предыдущих/других/следующих.

Логика! Убил. А может тогда весь сервер перегружать для каждого запроса? Ведь "<HTTP>-протокол есть <state less> протокол".
А зачем вообще придумали сессии не подскажете?
В ответ на:
- а. у аппсервера не одна <HttpSession>, а набор/коллекция...
- б. коллекция - именно у аппсервера, а не у отдельная сессия у сервлета...

И? А небо голубое, а травка зеленая.
В ответ на:
- в. инстансе сервлета работает с копией/клоном сессии хранимой аппсервером.

Кто вам такое рассказал? Multiple servlets executing request threads may have active access to a single session object at the same time. The Developer has the responsibility for synchronizing access to session resources as appropriate.
Почитайте http://www.ibm.com/developerworks/library/j-jtp09238/index.html что ли.
В ответ на:
Тяжело.

И не говорите. Ведь зарекался с вами общаться, потому как постоянно с гигантским апломбом несете чушь про то, в чем вообще не разбираетесь...
В ответ на:
Остается только спросить - что будет при многократных, до окончания выполнения, запросах (и запусках)
сервлета и хранении в сессиях каких-то промежуточных данных?

В нескольких потоках (да-да каждый запрос контейнер обрабатывает в отдельный свободном потоке) будет выполнятся один и тот же код у одного и того же объекта (конечно, внутри потока создается своя "копия" объекта, которая синхронизируется или принудительно, или когда свободное время будет с "оригиналом". Как реализованы потоки на яве вам рассказывать не надо?)
Код сервлета должен быть thread-safe. "Промежуточные данные" следует хранить в сессии не забывая что одноверменно могут работать много потоков. Что опять же в обной и той же сессии происзодит не так часто. При AJAX-овский запросах бывает, да. Или синхронизируем доступ, или привязываем к потоку.
В ответ на:
Ну скажем запрет на повторный вход в контекстно-критическую секцию кода...

Вы про синхронизацию слышали?
В ответ на:
Почему этой проблемы нет?

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

Перейти на