org.apache.catalina.session
public abstract class PersistentManagerBase extends ManagerBase implements Lifecycle, PropertyChangeListener
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.
Version: $Revision: 892872 $ $Date: 2009-12-21 17:38:29 +0100 (Mon, 21 Dec 2009) $
Field Summary | |
---|---|
protected LifecycleSupport | lifecycle
The lifecycle event support for this component. |
protected int | maxActiveSessions
The maximum number of active Sessions allowed, or -1 for no limit. |
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 long | processingTime
Processing time during session expiration and passivation. |
protected int | rejectedSessions
Number of session creations that failed due to maxActiveSessions. |
protected boolean | saveOnRestart
Whether to save and reload sessions when the Manager unload
and load methods are called. |
protected boolean | started
Has this component been started yet? |
protected Store | store
Store object which will manage the Session store. |
Method Summary | |
---|---|
void | addLifecycleListener(LifecycleListener listener)
Add a lifecycle event listener to this component.
|
void | clearStore()
Clear all sessions from the Store. |
LifecycleListener[] | findLifecycleListeners()
Get the lifecycle listeners associated with this lifecycle. |
Session | findSession(String id)
Return the active Session, associated with this Manager, with the
specified session id (if any); otherwise return null .
|
String | getInfo()
Return descriptive information about this Manager implementation and
the corresponding version number, in the format
<description>/<version> . |
int | getMaxActiveSessions()
Return the maximum number of active Sessions allowed, or -1 for
no limit. |
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. |
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. |
int | getRejectedSessions()
Number of session creations that failed due to maxActiveSessions.
|
boolean | getSaveOnRestart()
Indicates whether sessions are saved when the Manager is shut down
properly. |
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
|
protected boolean | isStarted()
Get the started status. |
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 | propertyChange(PropertyChangeEvent event)
Process property change events from our associated Context.
|
void | remove(Session session)
Remove this Session from the active Sessions for this Manager,
and from the Store.
|
void | removeLifecycleListener(LifecycleListener listener)
Remove a lifecycle event listener from this component.
|
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 | setContainer(Container container)
Set the Container with which this Manager has been associated. |
void | setMaxActiveSessions(int max)
Set the maximum number of actives Sessions allowed, or -1 for
no limit.
|
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 | setRejectedSessions(int rejectedSessions) |
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. |
protected void | setStarted(boolean started)
Set the started flag |
void | setStore(Store store)
Set the Store object which will manage persistent Session
storage for this Manager.
|
void | start()
Prepare for the beginning of active use of the public methods of this
component. |
void | stop()
Gracefully terminate the active use of the public methods of this
component. |
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. |
unload
and load
methods are called.Parameters: listener The listener to add
null
.
This method checks the persistence store if persistence is enabled,
otherwise just uses the functionality from ManagerBase.
Parameters: id The session id for the session to be returned
Throws: IllegalStateException if a new session cannot be instantiated for any reason IOException if an input/output error occurs while processing this request
<description>/<version>
.Returns: The count
Parameters: id The session id for the session to be searched for
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.
Parameters: event The property change event that has occurred
Parameters: session Session to be removed
Parameters: listener The listener to remove
Parameters: id Session's id to be removed
Parameters: session Session to be removed
Parameters: container The associated Container
Parameters: max The new maximum number of sessions
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.
Parameters: backup The number of seconds after their last accessed time when they should be written to the Store.
Parameters: saveOnRestart true if sessions should be saved on restart, false if they should be ignored.
Parameters: store the associated Store
configure()
,
and before any of the public methods of the component are utilized.
Throws: LifecycleException if this component detects a fatal error that prevents this component from being used
Throws: LifecycleException if this component detects a fatal error that needs to be reported
Parameters: session The Session to write out.
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.