2012-02-23 20 views
9

Con Play 1.0 abbiamo avuto il metodo session.getId() per recuperare un identificatore di sessione univoco.Dove si trova session.id in Play 2.0?

L'ID era pratico per il prefisso chiavi nella cache globale.

Dove è equivalente a sessione 2.0 session.id?

risposta

12

Poiché i dati della sessione vengono memorizzati come cookie, non c'è più ID di sessione con il gioco 2.0. In effetti, non è necessario alcun token di identificazione, i dati di sessione vengono semplicemente passati insieme a ogni richiesta lasciando il server completamente privo di stato.

Tuttavia, si può ancora bisogno di un ID se avete bisogno di memorizzare per i dati utente nella cache globale. A tale scopo, utilizzare il codice qui sotto

// Generate a unique id 
String uuid=session("uuid"); 
if(uuid==null) { 
    uuid=java.util.UUID.randomUUID().toString(); 
    session("uuid", uuid); 
} 

id di sessione? sembra così Java EE comunque ...

+0

Come si controlla il ciclo di vita degli oggetti nella cache globale? Configurare TTL e altri parametri di scadenza? –

+0

Il ciclo di vita dipende dall'implementazione della cache. Non conosco i dettagli, se ricordo che EHCache usa WeakReferences che vengono cancellate quando la JVM richiede memoria. EHCache è una delle migliori API per il caching, sono sicuro che supportano le impostazioni di scadenza. –

+0

Ok, ma cosa c'è di così diffrente/migliore in Play 2.0? Una sessione (in generale) è solo un negozio con un certo ciclo di vita. Il "problema di stato" è imho causato da dettagli di attuazione. –