Save This Page
Home » apache-tomcat-6.0.26-src » org.apache » catalina » session » [javadoc | source]
org.apache.catalina.session
abstract public class: PersistentManagerBase [javadoc | source]
java.lang.Object
   org.apache.catalina.session.ManagerBase
      org.apache.catalina.session.PersistentManagerBase

All Implemented Interfaces:
    PropertyChangeListener, Lifecycle, Manager, MBeanRegistration

Direct Known Subclasses:
    PersistentManager

Extends the ManagerBase class to implement most of the functionality required by a Manager which supports any kind of persistence, even if onlyfor restarts.

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.

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  boolean started    Has this component been started yet? 
protected  Store store    Store object which will manage the Session store. 
protected  boolean saveOnRestart    Whether to save and reload sessions when the Manager unload and load methods are called. 
protected  int maxIdleBackup    How long a session must be idle before it should be backed up. -1 means sessions won't be backed up. 
protected  int minIdleSwap    Minimum time a session must be idle before it is swapped to disk. This overrides maxActiveSessions, to prevent thrashing if there are lots of active sessions. Setting to -1 means it's ignored. 
protected  int maxIdleSwap    The maximum time a session may be idle before it should be swapped to file just on general principle. Setting this to -1 means sessions should not be forced out. 
protected  int rejectedSessions    Number of session creations that failed due to maxActiveSessions. 
protected  long processingTime    Processing time during session expiration and passivation. 
Fields inherited from org.apache.catalina.session.ManagerBase:
log,  randomIS,  devRandomSource,  DEFAULT_ALGORITHM,  algorithm,  container,  digest,  distributable,  entropy,  maxInactiveInterval,  sessionIdLength,  name,  random,  randomClass,  sessionMaxAliveTime,  sessionAverageAliveTime,  expiredSessions,  sessions,  sessionCounter,  maxActive,  duplicates,  initialized,  processingTime,  processExpiresFrequency,  sm,  support,  domain,  oname,  mserver
Method from org.apache.catalina.session.PersistentManagerBase Summary:
addLifecycleListener,   clearStore,   findLifecycleListeners,   findSession,   getInfo,   getMaxActiveSessions,   getMaxIdleBackup,   getMaxIdleSwap,   getMinIdleSwap,   getName,   getRejectedSessions,   getSaveOnRestart,   getStore,   isLoaded,   isStarted,   load,   processExpires,   processMaxActiveSwaps,   processMaxIdleBackups,   processMaxIdleSwaps,   processPersistenceChecks,   propertyChange,   remove,   removeLifecycleListener,   removeSession,   removeSuper,   setContainer,   setMaxActiveSessions,   setMaxIdleBackup,   setMaxIdleSwap,   setMinIdleSwap,   setRejectedSessions,   setSaveOnRestart,   setStarted,   setStore,   start,   stop,   swapIn,   swapOut,   unload,   writeSession
Methods from org.apache.catalina.session.ManagerBase:
add,   addPropertyChangeListener,   backgroundProcess,   changeSessionId,   createEmptySession,   createSession,   createSession,   destroy,   expireSession,   findSession,   findSessions,   generateSessionId,   getActiveSessions,   getAlgorithm,   getClassName,   getContainer,   getCreationTime,   getCreationTimestamp,   getDigest,   getDistributable,   getDomain,   getDuplicates,   getEngine,   getEntropy,   getExpiredSessions,   getInfo,   getJvmRoute,   getLastAccessedTime,   getLastAccessedTimestamp,   getMaxActive,   getMaxInactiveInterval,   getName,   getNewSession,   getObjectName,   getProcessExpiresFrequency,   getProcessingTime,   getRandom,   getRandomBytes,   getRandomClass,   getRandomFile,   getSession,   getSessionAttribute,   getSessionAverageAliveTime,   getSessionCounter,   getSessionIdLength,   getSessionMaxAliveTime,   init,   listSessionIds,   postDeregister,   postRegister,   preDeregister,   preRegister,   processExpires,   remove,   removePropertyChangeListener,   setAlgorithm,   setContainer,   setDistributable,   setDuplicates,   setEntropy,   setExpiredSessions,   setMaxActive,   setMaxInactiveInterval,   setProcessExpiresFrequency,   setProcessingTime,   setRandomClass,   setRandomFile,   setSessionAverageAliveTime,   setSessionCounter,   setSessionIdLength,   setSessionMaxAliveTime
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.catalina.session.PersistentManagerBase Detail:
 public  void addLifecycleListener(LifecycleListener listener) 
    Add a lifecycle event listener to this component.
 public  void clearStore() 
    Clear all sessions from the Store.
 public LifecycleListener[] findLifecycleListeners() 
    Get the lifecycle listeners associated with this lifecycle. If this Lifecycle has no listeners registered, a zero-length array is returned.
 public Session findSession(String id) throws IOException 
    Return the active Session, associated with this Manager, with the specified session id (if any); otherwise return null. This method checks the persistence store if persistence is enabled, otherwise just uses the functionality from ManagerBase.
 public String getInfo() 
    Return descriptive information about this Manager implementation and the corresponding version number, in the format <description>/<version>.
 public int getMaxActiveSessions() 
    Return the maximum number of active Sessions allowed, or -1 for no limit.
 public 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.
 public int getMaxIdleSwap() 
    The time in seconds after which a session should be swapped out of memory to disk.
 public 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.
 public String getName() 
    Return the descriptive short name of this Manager implementation.
 public int getRejectedSessions() 
    Number of session creations that failed due to maxActiveSessions.
 public boolean getSaveOnRestart() 
    Indicates whether sessions are saved when the Manager is shut down properly. This requires the unload() method to be called.
 public Store getStore() 
    Return the Store object which manages persistent Session storage for this Manager.
 public 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.
 public  void load() 
    Load all sessions found in the persistence mechanism, assuming they are marked as valid and have not passed their expiration limit. If persistence is not supported, this method returns without doing anything.

    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 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.
 public  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.
 public  void propertyChange(PropertyChangeEvent event) 
    Process property change events from our associated Context.
 public  void remove(Session session) 
    Remove this Session from the active Sessions for this Manager, and from the Store.
 public  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.
 public  void removeSuper(Session session) 
    Remove this Session from the active Sessions for this Manager, but not from the Store. (Used by the PersistentValve)
 public  void setContainer(Container container) 
    Set the Container with which this Manager has been associated. If it is a Context (the usual case), listen for changes to the session timeout property.
 public  void setMaxActiveSessions(int max) 
    Set the maximum number of actives Sessions allowed, or -1 for no limit.
 public  void setMaxIdleBackup(int backup) 
    Sets the option to back sessions up to the Store after they are used in a request. Sessions remain available in memory after being backed up, so they are not passivated as they are when swapped out. The value set indicates how old a session may get (since its last use) before it must be backed up: -1 means sessions are not backed up.

    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.

 public  void setMaxIdleSwap(int max) 
    Sets the time in seconds after which a session should be swapped out of memory to disk.
 public  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. Set it to -1 if it can be swapped out at any time.
 public  void setRejectedSessions(int rejectedSessions) 
 public  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. If set to false, any sessions found in the Store may still be picked up when the Manager is started again.
 protected  void setStarted(boolean started) 
    Set the started flag
 public  void setStore(Store store) 
    Set the Store object which will manage persistent Session storage for this Manager.
 public  void start() throws LifecycleException 
    Prepare for the beginning of active use of the public methods of this component. This method should be called after configure(), and before any of the public methods of the component are utilized.
 public  void stop() throws LifecycleException 
    Gracefully terminate the active use of the public methods of this component. This method should be the last one called on a given instance of this component.
 protected Session swapIn(String id) throws IOException 
    Look for a session in the Store and, if found, restore it in the Manager's list of active sessions if appropriate. The session will be removed from the Store after swapping in, but will not be added to the active session list if it is invalid or past its expiration.
 protected  void swapOut(Session session) throws IOException 
    Remove the session from the Manager's list of active sessions and write it out to the Store. If the session is past its expiration or invalid, this method does nothing.
 public  void unload() 
    Save all currently active sessions in the appropriate persistence mechanism, if any. If persistence is not supported, this method returns without doing anything.

    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.

 protected  void writeSession(Session session) throws IOException 
    Write the provided session to the Store without modifying the copy in memory or triggering passivation events. Does nothing if the session is invalid or past its expiration.