Cześć,
piszę pewną aplikację korzystającą z zewnętrznego systemu autentykacji użytkownika i jednym z głównych wymagań mojego klienta jest konieczność wylogowania użytkownika z mojej apki jak i ze wspomnianego systemu natychmiast po wygaśnięciu sesji (maxInactiveInterval == 600 sekund).
Zaimplementowałem zwykły SessionListener:
@WebListener
public class SessionListener implements HttpSessionListener {
private static Logger logger = LoggerFactory.getLogger(SessionListener.class);
@Override
public void sessionCreated(HttpSessionEvent hse) {
logger.info("Session: " + hse.getSession().getId());
hse.getSession().setMaxInactiveInterval(600);
}
@Override
public void sessionDestroyed(HttpSessionEvent hse) {
logger.info("Session: " +hse.getSession().getId() + "destroyed" );
logoutFromExternalSystem(hse.getSession());
}
.
.
.
}
Lecz
public void sessionDestroyed(HttpSessionEvent hse)
jest wywoływane od razu tylko wtedy kiedy sesja jest ubijana (kiedy użytkownik kliknie przycisk wyloguj)
request.getSession().invalidate();
Ale nie jest wywoływana natychmiast po wspomnianym timeoucie (600 sekund).
Szukam sposobu jak to rozwiązać.
Z góry dzięki za pomoc