Вход на сайт
Вопросик из области Web-Programmierung, Java
5645 просмотров
Перейти к просмотру всей ветки
в ответ v0id* 20.09.15 01:03
В ответ на:
Ну, то есть просто надо убрать static. Я поначалу так и думал, но потом решил все это verschlimmbessern.
Ну, то есть просто надо убрать static. Я поначалу так и думал, но потом решил все это verschlimmbessern.
Не-а. Убрав static вы сделаете поиск ошибки "а почему мой клиент то может залогинится то нет" очень увлекательным для тех, кто будет потом пытаться сделать что-то работающее их этого непотребства.
Смотрите. Вообще контейнер создает одну копию вашего сервлета. Т.е. установив флаг на "уже залогинился" даже в поле объекта, и нигде его не возвращая в "разлогинился", вы приходите к тому что у вас было со статическим полем. За одним исключением. Сервлет можно уничтожить и заново пронициализировать. Не надо перегружать всё приложение. Так что да, решение с флагом в поле объекта чем-то лучше чем со статическим полем.
Но. Вообще контейнеры могут создавать и несколько копий сервлета. Особенно если (как это сделано у вас) сервлет объявлен implements SingleThreadModel. Сколько копий - вы повлиять не можете. Какая копия будет обрабатывать какой запрос - тоже. И тут вы можете получить любое поведение да еще и меняющееся от версии контейнера. Поставите новую версию томката, или перейдете на JBoss, WAS еще что-то и ваш сервлет станет работать саавсем по другому.
Вы понимаете к чему вы придете если у вас будут несколько копий сервлета по очереди обрабатывающие запросы? (не каждая копия - свою сессию, а именно по очереди приходящих запросов).
В ответ на:
зато один сервлет может изгадить малину всем другим сервлетам
зато один сервлет может изгадить малину всем другим сервлетам
Если запихнете два раза один и тот же класс сервлета в два разных веб-приложения получите полностью независимые друг от друга классы. А можно и тут их связать :) Если архив с классом сервлета запихать не в WAR а в каталог с библиотеками самого томката :)
В ответ на:
Можно и внутри одной машины апплеты изолировать.
Можно и внутри одной машины апплеты изолировать.
Угу. Класслоадерами. Классы загруженные разными класслоадерами друг о друге не знают.