public interface SessionCache extends LifeCycle
Session
objects for a context.
Ideally, multiple requests for the same session id in the same context will always
share the same Session object from the SessionCache, but it would be possible
for implementations of SessionCache to create a fresh object for each request.
The SessionData pertaining to the Session objects is obtained from/written to a SessionDataStore.
The SessionDataStore is the authoritative source of session data:
LifeCycle.Listener
Modifier and Type | Field and Description |
---|---|
static int |
EVICT_ON_INACTIVITY |
static int |
EVICT_ON_SESSION_EXIT |
static int |
NEVER_EVICT |
Modifier and Type | Method and Description |
---|---|
void |
add(String id,
Session session)
Adds a new Session, with a never-before-used id,
to the cache.
|
Set<String> |
checkExpiration(Set<String> candidates)
Check a list of session ids that belong to potentially expired
sessions.
|
void |
checkInactiveSession(Session session)
Check a Session to see if it might be appropriate to
evict or expire.
|
void |
commit(Session session)
Called when a response is about to be committed.
|
boolean |
contains(String id)
Check to see if a Session is in the cache.
|
Session |
delete(String id)
Remove a Session completely: from both this
cache and the SessionDataStore.
|
boolean |
exists(String id)
Check to see if a session exists: WILL consult the
SessionDataStore.
|
Session |
get(String id)
Get an existing Session.
|
int |
getEvictionPolicy() |
SessionDataStore |
getSessionDataStore() |
SessionHandler |
getSessionHandler() |
void |
initialize(SessionContext context) |
boolean |
isFlushOnResponseCommit() |
boolean |
isRemoveUnloadableSessions() |
boolean |
isSaveOnCreate() |
boolean |
isSaveOnInactiveEviction() |
Session |
newSession(HttpServletRequest request,
String id,
long time,
long maxInactiveMs)
Create an entirely new Session.
|
Session |
newSession(SessionData data)
Re-materialize a Session that has previously existed.
|
void |
put(String id,
Session session)
Deprecated.
@see release
|
void |
release(String id,
Session session)
Finish using a Session.
|
default Session |
renewSessionId(String oldId,
String newId)
|
default Session |
renewSessionId(String oldId,
String newId,
String oldExtendedId,
String newExtendedId)
Change the id of a Session.
|
void |
setEvictionPolicy(int policy)
Sessions in this cache can be:
never evicted
evicted once the last request exits
evicted after a configurable period of inactivity
|
void |
setFlushOnResponseCommit(boolean flushOnResponse)
If true, a dirty session will be written to the SessionDataStore
just before a response is returned to the client.
|
void |
setRemoveUnloadableSessions(boolean removeUnloadableSessions)
If the data for a session exists but is unreadable,
the SessionCache can instruct the SessionDataStore to delete it.
|
void |
setSaveOnCreate(boolean saveOnCreate)
Whether or not a session that is newly created should be
immediately saved.
|
void |
setSaveOnInactiveEviction(boolean saveOnEvict)
Whether or not a a session that is about to be evicted should
be saved before being evicted.
|
void |
setSessionDataStore(SessionDataStore sds)
A SessionDataStore that is the authoritative source
of session information.
|
void |
shutdown() |
addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, start, stop, stop
static final int NEVER_EVICT
static final int EVICT_ON_SESSION_EXIT
static final int EVICT_ON_INACTIVITY
void initialize(SessionContext context)
context
- the SessionContext
to use for this cachevoid shutdown()
SessionHandler getSessionHandler()
Session newSession(HttpServletRequest request, String id, long time, long maxInactiveMs)
request
- the requestid
- the unique id associated to the sessiontime
- the timestamp of the session creationmaxInactiveMs
- the max inactive time in millisecondsSession newSession(SessionData data)
data
- the data associated with the session@Deprecated default Session renewSessionId(String oldId, String newId) throws Exception
renewSessionId(String oldId, String newId, String oldExtendedId, String newExtendedId)
oldId
- the old idnewId
- the new idException
- if anything went wrongdefault Session renewSessionId(String oldId, String newId, String oldExtendedId, String newExtendedId) throws Exception
oldId
- the current session idnewId
- the new session idoldExtendedId
- the current extended session idnewExtendedId
- the new extended session idException
- if any error occurredvoid add(String id, Session session) throws Exception
id
- session
- Exception
Session get(String id) throws Exception
id
- the session idException
- if any error occurredvoid put(String id, Session session) throws Exception
id
- the session idsession
- the current session objectException
- if any error occurredvoid release(String id, Session session) throws Exception
id
- the session idsession
- the current session objectException
- if any error occurredvoid commit(Session session) throws Exception
Exception
boolean contains(String id) throws Exception
id
- the session idException
- if any error occurredboolean exists(String id) throws Exception
id
- the session idException
- if any error occurredSession delete(String id) throws Exception
id
- the session idException
- if any error occurredSet<String> checkExpiration(Set<String> candidates)
candidates
- the session ids to checkvoid checkInactiveSession(Session session)
session
- the session to checkvoid setSessionDataStore(SessionDataStore sds)
sds
- the SessionDataStore
to useSessionDataStore getSessionDataStore()
SessionDataStore
usedvoid setEvictionPolicy(int policy)
policy
- -1 is never evict; 0 is evict-on-exit; and any other positive
value is the time in seconds that a session can be idle before it can
be evicted.int getEvictionPolicy()
void setSaveOnInactiveEviction(boolean saveOnEvict)
saveOnEvict
- true
if the session should be saved before being evictedboolean isSaveOnInactiveEviction()
true
if the session should be saved before being evictedvoid setSaveOnCreate(boolean saveOnCreate)
saveOnCreate
- true
to immediately save the newly created sessionboolean isSaveOnCreate()
true
the newly created session will be saved immediatelyvoid setRemoveUnloadableSessions(boolean removeUnloadableSessions)
removeUnloadableSessions
- true
to delete session which cannot be loadedboolean isRemoveUnloadableSessions()
true
unloadable session will be deletedvoid setFlushOnResponseCommit(boolean flushOnResponse)
boolean isFlushOnResponseCommit()
true
if dirty sessions should be written
before the response is committed.Copyright © 2010 - 2020 Adobe. All Rights Reserved