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.