public abstract class PersistentManagerBase extends ManagerBase implements StoreManager
IMPLEMENTATION NOTE: Correct behavior of session storing and
reloading depends upon external calls to the start()
and
stop()
methods of this class at the correct times.
ManagerBase.SessionTiming
Modifier and Type | Field and Description |
---|---|
protected int |
maxIdleBackup
How long a session must be idle before it should be backed up
|
protected int |
maxIdleSwap
The maximum time a session may be idle before it should be swapped
to file just on general principle.
|
protected int |
minIdleSwap
Minimum time a session must be idle before it is swapped to disk.
|
protected boolean |
saveOnRestart
Whether to save and reload sessions when the Manager
unload
and load methods are called. |
protected Store |
store
Store object which will manage the Session store.
|
distributable, duplicates, expiredSessions, maxActive, maxActiveSessions, maxInactiveInterval, processExpiresFrequency, processingTime, rejectedSessions, secureRandomAlgorithm, secureRandomClass, secureRandomProvider, SESSION_ID_LENGTH_UNSET, sessionCounter, sessionCreationTiming, sessionExpirationTiming, sessionIdGenerator, sessionIdGeneratorClass, sessionIdLength, sessionMaxAliveTime, sessions, sm, support, TIMING_STATS_CACHE_SIZE
mserver
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
Constructor and Description |
---|
PersistentManagerBase() |
Modifier and Type | Method and Description |
---|---|
void |
clearStore()
Clear all sessions from the Store.
|
Session |
findSession(String id)
Return the active Session, associated with this Manager, with the
specified session id (if any); otherwise return
null . |
int |
getActiveSessionsFull()
Returns the total session count for primary, backup and proxy.
|
int |
getMaxIdleBackup()
Indicates how many seconds old a session can get, after its last use in a
request, before it should be backed up to the store. -1 means sessions
are not backed up.
|
int |
getMaxIdleSwap()
The time in seconds after which a session should be swapped out of
memory to disk.
|
int |
getMinIdleSwap()
The minimum time in seconds that a session must be idle before
it can be swapped out of memory, or -1 if it can be swapped out
at any time.
|
String |
getName()
Return the descriptive short name of this Manager implementation.
|
boolean |
getSaveOnRestart()
Indicates whether sessions are saved when the Manager is shut down
properly.
|
Set<String> |
getSessionIdsFull()
Returns the list of all sessions IDS (primary, backup and proxy).
|
Store |
getStore()
Return the Store object which manages persistent Session
storage for this Manager.
|
boolean |
isLoaded(String id)
Return true, if the session id is loaded in memory
otherwise false is returned
|
void |
load()
Load all sessions found in the persistence mechanism, assuming
they are marked as valid and have not passed their expiration
limit.
|
void |
processExpires()
Implements the Manager interface, direct call to processExpires and processPersistenceChecks
|
protected void |
processMaxActiveSwaps()
Swap idle sessions out to Store if too many are active
|
protected void |
processMaxIdleBackups()
Back up idle sessions.
|
protected void |
processMaxIdleSwaps()
Swap idle sessions out to Store if they are idle too long.
|
void |
processPersistenceChecks()
Called by the background thread after active sessions have been checked
for expiration, to allow sessions to be swapped out, backed up, etc.
|
void |
remove(Session session,
boolean update)
Remove this Session from the active Sessions for this Manager,
and from the Store.
|
protected void |
removeSession(String id)
Remove this Session from the active Sessions for this Manager,
and from the Store.
|
void |
removeSuper(Session session)
Remove this Session from the active Sessions for this Manager,
but not from the Store.
|
void |
setMaxIdleBackup(int backup)
Sets the option to back sessions up to the Store after they
are used in a request.
|
void |
setMaxIdleSwap(int max)
Sets the time in seconds after which a session should be swapped out of
memory to disk.
|
void |
setMinIdleSwap(int min)
Sets the minimum time in seconds that a session must be idle before
it can be swapped out of memory due to maxActiveSession.
|
void |
setSaveOnRestart(boolean saveOnRestart)
Set the option to save sessions to the Store when the Manager is
shut down, then loaded when the Manager starts again.
|
void |
setStore(Store store)
Set the Store object which will manage persistent Session
storage for this Manager.
|
protected void |
startInternal()
Start this component and implement the requirements
of
LifecycleBase.startInternal() . |
protected void |
stopInternal()
Stop this component and implement the requirements
of
LifecycleBase.stopInternal() . |
protected Session |
swapIn(String id)
Look for a session in the Store and, if found, restore
it in the Manager's list of active sessions if appropriate.
|
protected void |
swapOut(Session session)
Remove the session from the Manager's list of active
sessions and write it out to the Store.
|
void |
unload()
Save all currently active sessions in the appropriate persistence
mechanism, if any.
|
protected void |
writeSession(Session session)
Write the provided session to the Store without modifying
the copy in memory or triggering passivation events.
|
add, addPropertyChangeListener, backgroundProcess, changeSessionId, changeSessionId, changeSessionId, createEmptySession, createSession, expireSession, findSessions, generateSessionId, getActiveSessions, getClassName, getContainer, getContext, getCreationTime, getCreationTimestamp, getDistributable, getDomainInternal, getDuplicates, getEngine, getExpiredSessions, getJvmRoute, getLastAccessedTime, getLastAccessedTimestamp, getMaxActive, getMaxActiveSessions, getMaxInactiveInterval, getNewSession, getObjectNameKeyProperties, getProcessExpiresFrequency, getProcessingTime, getRejectedSessions, getSecureRandomAlgorithm, getSecureRandomClass, getSecureRandomProvider, getSession, getSessionAttribute, getSessionAverageAliveTime, getSessionCounter, getSessionCreateRate, getSessionExpireRate, getSessionIdGenerator, getSessionIdLength, getSessionMaxAliveTime, getThisAccessedTime, getThisAccessedTimestamp, initInternal, listSessionIds, propertyChange, remove, removePropertyChangeListener, setContainer, setContext, setDistributable, setDuplicates, setExpiredSessions, setMaxActive, setMaxActiveSessions, setMaxInactiveInterval, setProcessExpiresFrequency, setProcessingTime, setSecureRandomAlgorithm, setSecureRandomClass, setSecureRandomProvider, setSessionCounter, setSessionIdGenerator, setSessionIdLength, setSessionMaxAliveTime, toString, updateSessionMaxAliveTime
destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, init, removeLifecycleListener, setState, setState, start, stop
protected Store store
protected boolean saveOnRestart
unload
and load
methods are called.protected int maxIdleBackup
protected int minIdleSwap
protected int maxIdleSwap
public int getMaxIdleBackup()
public void setMaxIdleBackup(int backup)
Note that this is not a hard limit: sessions are checked against this age limit periodically according to processExpiresFrequency. This value should be considered to indicate when a session is ripe for backing up.
So it is possible that a session may be idle for maxIdleBackup + processExpiresFrequency * engine.backgroundProcessorDelay seconds, plus the time it takes to handle other session expiration, swapping, etc. tasks.
backup
- The number of seconds after their last accessed
time when they should be written to the Store.public int getMaxIdleSwap()
public void setMaxIdleSwap(int max)
public int getMinIdleSwap()
public void setMinIdleSwap(int min)
public boolean isLoaded(String id)
id
- The session id for the session to be searched forpublic String getName()
getName
in class ManagerBase
public void setStore(Store store)
store
- the associated Storepublic Store getStore()
getStore
in interface StoreManager
public boolean getSaveOnRestart()
public void setSaveOnRestart(boolean saveOnRestart)
saveOnRestart
- true if sessions should be saved on restart, false if
they should be ignored.public void clearStore()
public void processExpires()
processExpires
in class ManagerBase
public void processPersistenceChecks()
public Session findSession(String id) throws IOException
null
.
This method checks the persistence store if persistence is enabled,
otherwise just uses the functionality from ManagerBase.findSession
in interface Manager
findSession
in class ManagerBase
id
- The session id for the session to be returnedIllegalStateException
- if a new session cannot be
instantiated for any reasonIOException
- if an input/output error occurs while
processing this requestpublic void removeSuper(Session session)
removeSuper
in interface StoreManager
session
- Session to be removedpublic void load()
Note that by default, this method is not called by the MiddleManager class. In order to use it, a subclass must specifically call it, for example in the start() and/or processPersistenceChecks() methods.
public void remove(Session session, boolean update)
remove
in interface Manager
remove
in class ManagerBase
session
- Session to be removedupdate
- Should the expiration statistics be updatedprotected void removeSession(String id)
id
- Session's id to be removedpublic void unload()
Note that by default, this method is not called by the MiddleManager class. In order to use it, a subclass must specifically call it, for example in the stop() and/or processPersistenceChecks() methods.
public int getActiveSessionsFull()
DistributedManager
getActiveSessionsFull
in interface DistributedManager
public Set<String> getSessionIdsFull()
DistributedManager
getSessionIdsFull
in interface DistributedManager
protected Session swapIn(String id) throws IOException
IOException
protected void swapOut(Session session) throws IOException
session
- The Session to write out.IOException
protected void writeSession(Session session) throws IOException
IOException
protected void startInternal() throws LifecycleException
LifecycleBase.startInternal()
.startInternal
in class ManagerBase
LifecycleException
- if this component detects a fatal error
that prevents this component from being usedprotected void stopInternal() throws LifecycleException
LifecycleBase.stopInternal()
.stopInternal
in class ManagerBase
LifecycleException
- if this component detects a fatal error
that prevents this component from being usedprotected void processMaxIdleSwaps()
protected void processMaxActiveSwaps()
protected void processMaxIdleBackups()
Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.