Ho impostato l'intervallo inattivo massimo per la sessione Vaadin come segue.Set di sessione Vaadin SetMaxInactiveInterval Risposta all'interfaccia utente incoerente
VaadinSession.getCurrent().getSession().setMaxInactiveInterval(60);
Aggiunta una sessione di ascolto come segue per il test.
servletService.addSessionDestroyListener(new SessionDestroyListener() {
public void sessionDestroy(SessionDestroyEvent event) {
System.out.println("SESSION TIMEOUT");
}
});
Questo listener viene chiamato all'ora desiderata sul lato server. Tuttavia, non riesco a vedere il messaggio "Sessione scaduta" sul lato browser contemporaneamente. Normalmente viene visualizzato tra il 4 ° e il 5 ° minuto. C'è un modo per ottenere entrambi questi allo stesso tempo in modo coerente.
Si noti inoltre che non stiamo utilizzando push e non è un'opzione per noi al momento.
L'esecuzione del polling lato client reimposta l'ultima ora attiva delle sessioni e può mantenere la sessione attiva per sempre se l'intervallo di polling è inferiore a maxInactiveInterval.
grazie per la risposta, sì, so che il problema è lato client non viene notificato. Comunque stiamo facendo l'app senza Push. Anche la modifica di nulla non è un'opzione poiché sembra che la sessione non sia scaduta. Forzare un aggiornamento della pagina sembra un'opzione. Ma penso che non funzionerà con una sessione distrutta, dal momento che non esiste questo tipo di "Pagina" poiché non esiste una sessione client. Correggimi se sbaglio. – Don
L'utilizzo di Page.getCurrent(). Reload() (corretto il nome del metodo nella mia risposta) dovrebbe aggiornare la pagina client perché anche se la sessione client è scaduta, l'oggetto Page relativo ad esso deve ancora esistere. Secondo me, senza Push non è possibile notificare correttamente il client. Ho aggiunto un'altra soluzione che ho appena trovato nel caso in cui possa risolvere il tuo problema. – Supamiu
sì, ho anche pensato di eseguire il polling sul lato client per vedere se il server è ancora vivo. Ma non funzionerà dal momento che il polling server resetterà l'ultimo orario attivo della sessione e, a causa di quella sessione, non verrà mai scaduto. – Don