Class InMemoryWebSessionStore
- All Implemented Interfaces:
WebSessionStore
WebSession
instances.- Since:
- 5.0
- Author:
- Rossen Stoyanchev, Rob Winch
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionreactor.core.publisher.Mono<WebSession>
Create a new WebSession.getClock()
Return the configured clock for sessionlastAccessTime
calculations.int
Return the maximum number of sessions that can be stored.Return an unmodifiable copy of the map of sessions.void
Check for expired sessions and remove them.reactor.core.publisher.Mono<Void>
removeSession
(String id) Remove the WebSession for the specified id.reactor.core.publisher.Mono<WebSession>
Return the WebSession for the given id.void
Configure theClock
to use to set thelastAccessTime
on every created session and to calculate if the session has expired.void
setMaxSessions
(int maxSessions) Set the maximum number of sessions that can be stored.reactor.core.publisher.Mono<WebSession>
updateLastAccessTime
(WebSession session) Update the last accessed timestamp to "now".
-
Constructor Details
-
InMemoryWebSessionStore
public InMemoryWebSessionStore()
-
-
Method Details
-
setMaxSessions
public void setMaxSessions(int maxSessions) Set the maximum number of sessions that can be stored. Once the limit is reached, any attempt to store an additional session will result in anIllegalStateException
.By default set to 10000.
- Parameters:
maxSessions
- the maximum number of sessions- Since:
- 5.0.8
-
getMaxSessions
public int getMaxSessions()Return the maximum number of sessions that can be stored.- Since:
- 5.0.8
-
setClock
Configure theClock
to use to set thelastAccessTime
on every created session and to calculate if the session has expired.This may be useful to align to different time zones or to set the clock back in a test, for example,
Clock.offset(clock, Duration.ofMinutes(-31))
in order to simulate session expiration.By default this is
Clock.system(ZoneId.of("GMT"))
.- Parameters:
clock
- the clock to use
-
getClock
Return the configured clock for sessionlastAccessTime
calculations. -
getSessions
Return an unmodifiable copy of the map of sessions.This could be used for management purposes, to list active sessions, to invalidate expired sessions, etc.
- Since:
- 5.0.8
-
createWebSession
Description copied from interface:WebSessionStore
Create a new WebSession.Note that this does nothing more than create a new instance. The session can later be started explicitly via
WebSession.start()
or implicitly by adding attributes -- and then persisted viaWebSession.save()
.- Specified by:
createWebSession
in interfaceWebSessionStore
- Returns:
- the created session instance
-
retrieveSession
Description copied from interface:WebSessionStore
Return the WebSession for the given id.Note: This method should perform an expiration check, and if it has expired remove the session and return empty. This method should also update the
lastAccessTime
of retrieved sessions.- Specified by:
retrieveSession
in interfaceWebSessionStore
- Parameters:
id
- the session to load- Returns:
- the session, or an empty
Mono
-
removeSession
Description copied from interface:WebSessionStore
Remove the WebSession for the specified id.- Specified by:
removeSession
in interfaceWebSessionStore
- Parameters:
id
- the id of the session to remove- Returns:
- a completion notification (success or error)
-
updateLastAccessTime
Description copied from interface:WebSessionStore
Update the last accessed timestamp to "now".- Specified by:
updateLastAccessTime
in interfaceWebSessionStore
- Parameters:
session
- the session to update- Returns:
- the session with the updated last access time
-
removeExpiredSessions
public void removeExpiredSessions()Check for expired sessions and remove them.Typically such checks are kicked off lazily during calls to
createWebSession()
orretrieveSession(java.lang.String)
, no less than 60 seconds apart.This method can be called to force a check at a specific time.
- Since:
- 5.0.8
-