## org.apache.catalina.session
Class StandardManager

    java.lang.Object
      org.apache.catalina.session.ManagerBase
          org.apache.catalina.session.StandardManager

All Implemented Interfaces:
  java.util.EventListener, Lifecycle, Manager, javax.management.MBeanRegistration, java.beans.PropertyChangeListener

public class StandardManager
extends ManagerBase
implements Lifecycle, java.beans.PropertyChangeListener

Standard implementation of the Manager interface that provides simple session persistence across restarts of this component (such as when the entire server is shut down and restarted, or when a particular web application is reloaded.

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: 1.22.2.1 $ $Date: 2004/11/18 22:13:36 $
Author:
  Craig R. McClanahan, Jean-Francois Arcand

Field Summary
`protected int` `expiredSessions` Number of sessions that expired.
`protected static java.lang.String` `info` The descriptive information about this implementation.
`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 static java.lang.String` `name` The descriptive name of this Manager implementation (for logging).
`protected java.lang.String` `pathname` Path name of the disk file in which active sessions are saved when we stop, and from which these sessions are loaded when we start.
`protected long` `processingTime` Processing time during session expiration.
`protected int` `rejectedSessions` Number of session creations that failed due to maxActiveSessions.
`protected boolean` `started` Has this component been started yet?

Fields inherited from class org.apache.catalina.session.ManagerBase
`algorithm, container, debug, DEFAULT_ALGORITHM, defaultContext, devRandomSource, digest, distributable, domain, duplicates, entropy, initialized, log, maxActive, maxInactiveInterval, mserver, oname, random, randomClass, randomIS, sessionCounter, sessionIdLength, sessions, sm, support`

Fields inherited from interface org.apache.catalina.Lifecycle
`AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, START_EVENT, STOP_EVENT`

Constructor Summary
`StandardManager()`

Method Summary
`void` `addLifecycleListener(LifecycleListener listener)` Add a lifecycle event listener to this component.
`void` `backgroundProcess()` Implements the Manager interface, direct call to processExpires
`Session` `createSession()` Construct and return a new session object, based on the default settings specified by this Manager's properties.
`protected void` `doLoad()` Load any currently active sessions that were previously unloaded to the appropriate persistence mechanism, if any.
`protected void` `doUnload()` Save any currently active sessions in the appropriate persistence mechanism, if any.
`protected java.io.File` `file()` Return a File object representing the pathname to our persistence file, if any.
`LifecycleListener[]` `findLifecycleListeners()` Get the lifecycle listeners associated with this lifecycle.
`int` `getExpiredSessions()` Number of sessions that expired.
`java.lang.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.
`java.lang.String` `getName()` Return the descriptive short name of this Manager implementation.
`java.lang.String` `getPathname()` Return the session persistence pathname, if any.
`long` `getProcessingTime()`
`int` `getRejectedSessions()` Number of session creations that failed due to maxActiveSessions
`void` `load()` Load any currently active sessions that were previously unloaded to the appropriate persistence mechanism, if any.
`void` `processExpires()` Invalidate all sessions that have expired.
`void` `propertyChange(java.beans.PropertyChangeEvent event)` Process property change events from our associated Context.
`void` `removeLifecycleListener(LifecycleListener listener)` Remove a lifecycle event listener from this component.
`void` `setContainer(Container container)` Set the Container with which this Manager has been associated.
`void` `setExpiredSessions(int expiredSessions)` Sets the number of sessions that have expired.
`void` `setMaxActiveSessions(int max)` Set the maximum number of actives Sessions allowed, or -1 for no limit.
`void` `setPathname(java.lang.String pathname)` Set the session persistence pathname to the specified value.
`void` `setProcessingTime(long processingTime)`
`void` `setRejectedSessions(int rejectedSessions)` Sets the number of sessions that were not created because the maximum number of active sessions was reached.
`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.
`void` `unload()` Save any currently active sessions in the appropriate persistence mechanism, if any.

Methods inherited from class org.apache.catalina.session.ManagerBase

`add, addPropertyChangeListener, createEmptySession, destroy, expireSession, findSession, findSessions, generateSessionId, getActiveSessions, getAlgorithm, getClassName, getContainer, getDebug, getDefaultContext, getDigest, getDistributable, getDomain, getDuplicates, getEngine, getEntropy, getJvmRoute, getLastAccessedTime, getMaxActive, getMaxInactiveInterval, getNewSession, getObjectName, getRandom, getRandomBytes, getRandomClass, getRandomFile, getSessionAttribute, getSessionCounter, getSessionIdLength, init, listSessionIds, log, log, postDeregister, postRegister, preDeregister, preRegister, remove, removePropertyChangeListener, setAlgorithm, setDebug, setDefaultContext, setDistributable, setDuplicates, setEntropy, setMaxActive, setMaxInactiveInterval, setRandomClass, setRandomFile, setSessionCounter, setSessionIdLength`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### info

    protected static final java.lang.String info

  The descriptive information about this implementation.

  See Also:
    Constant Field Values

### lifecycle

    protected LifecycleSupport lifecycle

  The lifecycle event support for this component.

### maxActiveSessions

    protected int maxActiveSessions

  The maximum number of active Sessions allowed, or -1 for no limit.

### name

    protected static java.lang.String name

  The descriptive name of this Manager implementation (for logging).

### pathname

    protected java.lang.String pathname

  Path name of the disk file in which active sessions are saved when we stop, and from which these sessions are loaded when we start. A `null` value indicates that no persistence is desired. If this pathname is relative, it will be resolved against the temporary working directory provided by our context, available via the `javax.servlet.context.tempdir` context attribute.

### started

    protected boolean started

  Has this component been started yet?

### rejectedSessions

    protected int rejectedSessions

  Number of session creations that failed due to maxActiveSessions.

### expiredSessions

    protected int expiredSessions

  Number of sessions that expired.

### processingTime

    protected long processingTime

  Processing time during session expiration.

Constructor Detail

### StandardManager

    public StandardManager()

Method Detail

### setContainer

    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.

  Specified by:
    `setContainer` in interface `Manager`
  Overrides:
    `setContainer` in class `ManagerBase`
  Parameters:
    `container` - The associated Container

### getInfo

    public java.lang.String getInfo()

  Return descriptive information about this Manager implementation and the corresponding version number, in the format `<description>/<version>`.

  Specified by:
    `getInfo` in interface `Manager`
  Overrides:
    `getInfo` in class `ManagerBase`

### getMaxActiveSessions

    public int getMaxActiveSessions()

  Return the maximum number of active Sessions allowed, or -1 for no limit.

### getRejectedSessions

    public int getRejectedSessions()

  Number of session creations that failed due to maxActiveSessions

  Specified by:
    `getRejectedSessions` in interface `Manager`
  Returns:
    The count

### setRejectedSessions

    public void setRejectedSessions(int rejectedSessions)

  Description copied from interface: `Manager`
  Sets the number of sessions that were not created because the maximum number of active sessions was reached.

  Specified by:
    `setRejectedSessions` in interface `Manager`
  Parameters:
    `rejectedSessions` - Number of rejected sessions

### getExpiredSessions

    public int getExpiredSessions()

  Number of sessions that expired.

  Specified by:
    `getExpiredSessions` in interface `Manager`
  Returns:
    The count

### setExpiredSessions

    public void setExpiredSessions(int expiredSessions)

  Description copied from interface: `Manager`
  Sets the number of sessions that have expired.

  Specified by:
    `setExpiredSessions` in interface `Manager`
  Parameters:
    `expiredSessions` - Number of sessions that have expired

### getProcessingTime

    public long getProcessingTime()

### setProcessingTime

    public void setProcessingTime(long processingTime)

### setMaxActiveSessions

    public void setMaxActiveSessions(int max)

  Set the maximum number of actives Sessions allowed, or -1 for no limit.

  Parameters:
    `max` - The new maximum number of sessions

### getName

    public java.lang.String getName()

  Return the descriptive short name of this Manager implementation.

  Overrides:
    `getName` in class `ManagerBase`

### getPathname

    public java.lang.String getPathname()

  Return the session persistence pathname, if any.

### setPathname

    public void setPathname(java.lang.String pathname)

  Set the session persistence pathname to the specified value. If no persistence support is desired, set the pathname to `null`.

  Parameters:
    `pathname` - New session persistence pathname

### createSession

    public Session createSession()

  Construct and return a new session object, based on the default settings specified by this Manager's properties. The session id will be assigned by this method, and available via the getId() method of the returned session. If a new session cannot be created for any reason, return `null`.

  Specified by:
    `createSession` in interface `Manager`
  Overrides:
    `createSession` in class `ManagerBase`
  Throws:
    `java.lang.IllegalStateException` - if a new session cannot be instantiated for any reason

### load

    public void load()
              throws java.lang.ClassNotFoundException,
                     java.io.IOException

  Load any currently active sessions that were previously unloaded to the appropriate persistence mechanism, if any. If persistence is not supported, this method returns without doing anything.

  Specified by:
    `load` in interface `Manager`
  Throws:
    `java.lang.ClassNotFoundException` - if a serialized class cannot be found during the reload
    `java.io.IOException` - if an input/output error occurs

### doLoad

    protected void doLoad()
                   throws java.lang.ClassNotFoundException,
                          java.io.IOException

  Load any currently active sessions that were previously unloaded to the appropriate persistence mechanism, if any. If persistence is not supported, this method returns without doing anything.

  Throws:
    `java.lang.ClassNotFoundException` - if a serialized class cannot be found during the reload
    `java.io.IOException` - if an input/output error occurs

### unload

    public void unload()
                throws java.io.IOException

  Save any currently active sessions in the appropriate persistence mechanism, if any. If persistence is not supported, this method returns without doing anything.

  Specified by:
    `unload` in interface `Manager`
  Throws:
    `java.io.IOException` - if an input/output error occurs

### doUnload

    protected void doUnload()
                     throws java.io.IOException

  Save any currently active sessions in the appropriate persistence mechanism, if any. If persistence is not supported, this method returns without doing anything.

  Throws:
    `java.io.IOException` - if an input/output error occurs

### addLifecycleListener

    public void addLifecycleListener(LifecycleListener listener)

  Add a lifecycle event listener to this component.

  Specified by:
    `addLifecycleListener` in interface `Lifecycle`
  Parameters:
    `listener` - The listener to add

### findLifecycleListeners

    public LifecycleListener[] findLifecycleListeners()

  Get the lifecycle listeners associated with this lifecycle. If this Lifecycle has no listeners registered, a zero-length array is returned.

  Specified by:
    `findLifecycleListeners` in interface `Lifecycle`

### removeLifecycleListener

    public void removeLifecycleListener(LifecycleListener listener)

  Remove a lifecycle event listener from this component.

  Specified by:
    `removeLifecycleListener` in interface `Lifecycle`
  Parameters:
    `listener` - The listener to remove

### start

    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.

  Specified by:
    `start` in interface `Lifecycle`
  Throws:
    `LifecycleException` - if this component detects a fatal error that prevents this component from being used

### stop

    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.

  Specified by:
    `stop` in interface `Lifecycle`
  Throws:
    `LifecycleException` - if this component detects a fatal error that needs to be reported

### propertyChange

    public void propertyChange(java.beans.PropertyChangeEvent event)

  Process property change events from our associated Context.

  Specified by:
    `propertyChange` in interface `java.beans.PropertyChangeListener`
  Parameters:
    `event` - The property change event that has occurred

### file

    protected java.io.File file()

  Return a File object representing the pathname to our persistence file, if any.

### processExpires

    public void processExpires()

  Invalidate all sessions that have expired.

### backgroundProcess

    public void backgroundProcess()

  Implements the Manager interface, direct call to processExpires

  Specified by:
    `backgroundProcess` in interface `Manager`
  Overrides:
    `backgroundProcess` in class `ManagerBase`

Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.