контекст уничтожен, но эта сессия все еще открыта - PullRequest
0 голосов
/ 14 февраля 2011

Я новичок в jsf, и я прочитал, что сеанс может быть уничтожен

FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);      

fc.getExternalContext().getSessionMap().clear();

session.invalidate();

Моя проблема заключается в том, что после этого сеанс все еще активен со следующим компонентом:

com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap

У вас есть идея?

1 Ответ

2 голосов
/ 14 февраля 2011

Это просто новый сеанс.Чтобы проверить это самостоятельно, проверьте значение HttpSession#getId() во время запроса до и после аннулирования.Это должно быть по-другому.


Независимо от конкретного вопроса, очистка карты сеанса не требуется всякий раз, когда вы звоните invalidate().Карта сессии все равно будет уничтожена.Также обратите внимание, что getSession(false) потенциально может вернуть null, и вы хотите добавить дополнительную проверку, чтобы избежать NullPointerException.Или просто используйте getSession(true).

...