Come pulire l'attributo della sessione da tutte le sessioni attive in Java?
-
20-08-2019 - |
Domanda
Attualmente sto lavorando a un progetto web che utilizza JSP / Servlet e framework struts. Stiamo usando il meccanismo della cache. Voglio cancellare parte dell'attributo della sessione da tutte le sessioni attive su un evento particolare (ad esempio in caso di aggiornamento della cache). Quindi qual è il modo migliore per implementare lo stesso?
Soluzione
Devi fornire una classe che implementa Interfaccia HttpSessionActivationListener (parte dell'API del server) e registrarlo in web.xml.
Quindi è possibile tenere traccia delle sessioni attive e utilizzare tali informazioni per ottenere l'accesso alle sessioni ed eseguire un aggiornamento dell'attributo. In effetti la classe di implementazione sarà un singleton, quindi devi trattare attentamente i problemi di sincronizzazione durante il tracciamento delle sessioni.
Naturalmente se si dispone di un ambiente cluster con più nodi, la propagazione della modifica degli attributi potrebbe essere piuttosto complessa.
Altri suggerimenti
Fammi indovinare .. stai memorizzando il valore dalla cache in una variabile di sessione, giusto?
Il modo più pulito per farlo è recuperare il valore dalla cache ogni volta che ne hai bisogno e lasciare che la cache gestisca la scadenza / ricarica ecc. Questa è la responsabilità della cache.
In altre parole, non archiviare il valore dalla cache negli oggetti sessione. Non servirà a nulla quando si utilizza una cache.
Saluti