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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top