Ciao a tutti.
Stiamo realizzando una applicazione Web e ci troviamo di fronte a dei problemi di concorrenza.
L'applicazione realizzata in java prevede l'uso di controller strutturati nel seguente modo:
controllerX --(estende)--> SuperController --(estende)--> HttpServlet
E' capitato, raramente, che in casi di stress del server alcuni dati di un utente X venivano visualizzati da un utente Y.
Quello che non ci è chiaro ora è come tomcat gestisce le istanze delle servlet. Cioè l'utente X e l'utente Y eseguono lo stesso codice su una medesima istanza? o viene creata una servlet dedicata per il singolo utente?
Per comprendere meglio la situazione devo tuttavia fare alcune specifiche. Il superController ha delle proprietà private, come ad esempio un BeanUtente che contiene appunto i dati dell'utente.
Googlando un po ho trovato alcune persone che sconsigliavano vivamente l'uso di variabili locali nelle servlet, a meno che non si tratti di variabili in "sola lettura" o la servlet non sia stata definita come "SingleThreadModel"(deprecato).
Questo conferma la mia ipotesi, cioè tomcat istanzia una sola classe servlet che viene poi utilizzata da tutti gli utenti contemporaneamente.![]()
E' possibile gestire questa problematica senza perdere il parallelismo dell'applicazione? ........qualsiasi commento o informazione sull'argomento sarebbbe molto apprezzato.
ciaoooooooooooo![]()