Ответ
HTTP-сессия в Java (объект HttpSession) закрывается в следующих случаях:
-
Таймаут неактивности — при отсутствии запросов от клиента в течение заданного интервала.
// Установка таймаута в 10 минут (в секундах) session.setMaxInactiveInterval(10 * 60); -
Явная инвалидация — вызов метода
invalidate().session.invalidate(); // Все атрибуты сессии удаляются -
Завершение работы приложения (деплоя) — при остановке сервлет-контейнера или перезагрузке веб-приложения.
-
Программное управление временем жизни — если задан абсолютный срок жизни (через
setMaxInactiveInterval).
Почему это важно: После закрытия сессии все её атрибуты (session.getAttribute()) безвозвратно теряются. Для сохранения данных между сессиями используйте постоянное хранилище (БД, кэш).