Не могу получить сеанс в сервлете Java - PullRequest
6 голосов
/ 29 июля 2011

Я впервые использую сервлеты, но я добился большого прогресса. Мои сервлеты работают хорошо. Поэтому я решил поставить механизм аутентификации, который создает сеанс, если пользователи дают правильный пароль и идентификаторы. Но сессии совершенно новые для меня. Поэтому я не совсем следую логике, но я начал понимать.

Как я упоминал ранее, один из моих сервлетов предназначен для входа в систему. Если пароль правильный, создается сеанс (я не храню никаких объектов / данных в сеансах), и клиент (remoteUser) получает уведомление о том, что пароль принят и сессия создана. То, что делает клиент, это чтобы получить любой другой сервлет в том же приложении. Другие сервлеты получают сеанс, чтобы проверить, создан ли он и действителен ли он (не истек ли тайм-аут). Для этой цели в этих других сервлетах я получаю сессию с:

HttpSession session = req.getSession(false); //false because this is not the place to create a session. sessions should only be created in the login servlet.

Но это возвращает ноль. Итак, я попробовал:

HttpSession session = req.getSession();

И проверил с помощью session.isNew (); и у меня это был новый сеанс. Таким образом, сессия, которую я создал в сервлете входа, не может быть вызвана с помощью req.getSession (); в другом сервлете.

PS: при создании сеанса в сервлете входа в систему: session.setMaxInactiveInterval (300); // 5 минут

Большое спасибо за любой ответ!

1 Ответ

5 голосов
/ 29 июля 2011

При использовании Google App Engine вы должны специально включить поддержку сеансов. Смотри http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...