Вы получите ViewExpiredException
, когда представление больше не будет в сеансе.Описанные симптомы свидетельствуют о том, что cookie-файл сеанса не поддерживается, и, таким образом, каждый запрос каким-то образом вынуждает сервер создать новый сеанс.
Я не могу воспроизвести вашу проблему локально на базовом проекте Mojarra 2.1.2, нацеленномна Tomcat 7.0.19.Сеанс поддерживается отлично.Я вижу заголовок ответа Set-Cookie
для JSESSIONID
в первом запросе и заголовок запроса Cookie
для JSESSIONID
в каждом последующем запросе в том же сеансе браузера.Вот как это должно работать.Таким образом, проблема, по крайней мере, напрямую не связана с Mojarra 2.1.2 или Tomcat 7.0.19.
Вы можете использовать Firebug, чтобы самостоятельно просмотреть и отследить файл cookie JSESSIONID
.Это первое, что я бы сделал.Вы должны проверить, является ли браузер тем, кто отказывается отправлять заголовок запроса Cookie
обратно (я не думаю, что это так), или что именно сервер отправляет новый заголовок ответа Set-cookie
каждый раз (я думаю, чтоВ этом случае).Если это действительно сервер, который заново создает сеанс каждый раз, даже если браузер отправил заголовок Cookie
, то это может означать только, что где-то в базе кода есть неправильный вызов HttpSession#invalidate()
, который вызывает это.Запустите отладчик, чтобы выявить виновника.