Mi piacerebbe sapere quando esattamente un HttpSession sarebbe scaduto (non è lo stesso di quello distrutto)?Quando è scaduta la sessione HttpSession (inizia ad essere idonea per la distruzione - non necessariamente ancora distrutta)?
Sto cercando di capire se session.getLastAccessedTime() + (session.getMaxInactiveInterval() * 1000) mi darà l'esatto tempo in millisecondi di scadenza della sessione ogni volta che una richiesta arriva con lo stesso ID di sessione!
Dalle javadocs:
lungo getLastAccessedTime()
Returns the last time the client sent a request associated with this session, as the number of milliseconds since midnight January 1, 1970 GMT, and marked by the time the container received the request.
int getMaxInactiveInterval()
Returns the maximum time interval, in seconds, that the servlet container will keep this session open between client accesses.
Consente di dire che abbiamo la seguente:
Treq1 - the time the container received the 1st request
(HttpSession.lastAccessedTime)
Tresp1 - the time the container sends the 1st response
Preq1 - the time period between Treq1 and Tresp1 (the time period that the server processes the 1st request
Treq2 - the time the container received the 2nd request
(HttpSession.lastAccessedTime)
Preq1req2 - the time period between Treq1 and Treq2 (the time between requests entering the container)
Presp1req2 - the time period between Tresp1 and Treq2 (the time between the 1st response exiting the container and the 2nd request entering the container)
Così ora, quando si fa il server calcolare il sessione scaduta? Quando:
1. Treq1 + maxInactiveInterval < Treq1 + Preq1req2 =>maxInactiveInterval < Preq1req2
2. Tresp1 + maxInactiveInterval < Tresp1 + Presp1req2 =>maxInactiveInterval < Presp1req2
Questa parte, è un the servlet container will keep this session open between client accesses
un po 'di confusione. Significa tra le richieste che entrano nel contenitore o tra la risposta che esce e le richieste che entrano?
Su un lato nota, so che la sessione non può essere distrutto al momento esatto in cui scade, ma non so ancora se è distrutto prima che si verifichi qualsiasi logica di elaborazione delle richieste in Il container. Mi riferisco alla richiesta che contiene un id della sessione scaduta.
Cordiali saluti,
despota
Perché è importante? Il tempo di una richiesta è in genere di pochi millisecondi. Il timeout della sessione è in genere di 30 minuti. Importa se è 30.000 o 30.002? Qual è il tuo obiettivo finale? Ad ogni modo, la risposta è nella domanda: * e contrassegnata dal momento in cui il contenitore ha ricevuto la richiesta * –
È importante, dal momento che voglio sapere esattamente al client a che ora la sessione sarà scaduta. "la risposta è nella domanda: e contrassegnata dal momento in cui il contenitore ha ricevuto la richiesta", questo potrebbe riferirsi solo al lastAccessedTime. Sei sicuro che la data di scadenza sarà session.getLastAccessedTime() + (session.getMaxInactiveInterval() * 1000) (1. caso)? C'è qualche fonte là fuori che potrebbe confermarlo? Grazie per il commento! – despot
E vuoi essere preciso al millisecondo? L'utente finale si preoccupa se è in 30 minuti o in 30 minuti e 8 millisecondi? In ogni caso, la sessione non verrà distrutta in quel momento, poiché il contenitore in genere utilizza un thread in background che distrugge le sessioni scadute ogni minuto circa. –