JSF HttpSessionListener, wylogowanie przed zamknięciem sesji.

0

Chce aby przed zamknięciem sesji otworzyła się domyslan strona aplikacji (logowania). W tym celu stworzylem SessionListene i w metodzie @PreDestroy chce wywołać: FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); niestety wala mi bląd: rg.apache.catalina.session.StandardSession.expire(StandardSession.java:910)
jak mogę rozwiązać ten problem w inny sposób?

0

A czemu ta linia ma służyć? Co się stanie jak ją usuniesz?

1

Nie wiem czy da się to sensownie zrobić. Możesz zastosować trochę inną sztuczkę, i żeby sesja nie wygasała- okresowo (np. używając primefaces/poll) wywoływać jakąś pustą metodę po stronie serwera. Taki komponent możesz wstawić do głównego szablonu strony. Jest to mało eleganckie ale działa ;)
Druga metoda polega na tym, żeby aplikacja przekierowała użytkownika na stronę panelu logowania razie wystąpienia wyjątku ViewExpiredException, tak jak tutaj:
https://stackoverflow.com/questions/20863925/jsfviewexpiredexception-handling-from-web-xml-is-not-working
to zadziała gdy użytkownik zrobi "normalne" zapytanie (zatwierdzenie formularza), ale nie gdy zrobi zapytanie AJAXem. Wtedy możesz spróbować załatwić to tak jak tutaj:
https://stackoverflow.com/questions/11203195/session-timeout-and-viewexpiredexception-handling-on-jsf-primefaces-ajax-request
invalidateSession() raczej nie ma sensu bo przecież i tak sesja gaśnie.

0

Super, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1