Ho un'applicazione GWT con servizio RPC nel back-end. Attualmente sto cercando di implementare il supporto degli utenti e l'unica domanda che rimane è il modo in cui dovrei memorizzare i dati di sessione.Utilizzo delle sessioni nell'applicazione GWT
che sto memorizzare id sessione utilizzando
getThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
Quindi, la prima domanda è di più per servlet Java che a GWT. Fa questa garanzia codice che la prossima volta che effettuare una chiamata in questo modo:
getThreadLocalRequest().getSession().getAttribute("sid");
Sarebbe essere sia nullo (nel caso in cui viene chiamato per l'utente che non ha ancora visitato la porzione di codice in cui è impostato l'attributo SID) o sarebbe esattamente lo stesso SID che ho già salvato per quell'utente. In altre parole, questi 2 pezzi di codice sono specifici per utente? (per utente Intendo un singolo browser su un singolo computer)
La seconda domanda riguarda l'archiviazione dei mapping tra SID e alcuni dati aggiuntivi come l'id utente. In caso ho un codice come questo:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
E 'garantito che sessions
è sempre lo stesso oggetto per tutte le richieste ed i suoi dati rimarranno "vivo" a meno che l'intera applicazione è terminato? (Tomcat viene fermato per esempio) È un approccio normale o dovrei mantenere tutti questi mapping sul mio DB?
Grazie, gran bella risposta! – agibalov