org.apache.catalina.session
Class StandardManager

java.lang.Object
  extended by org.apache.catalina.session.ManagerBase
      extended by org.apache.catalina.session.StandardManager
All Implemented Interfaces:
java.beans.PropertyChangeListener, java.util.EventListener, javax.management.MBeanRegistration, Lifecycle, Manager

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: 1120 $ $Date: 2009-06-22 16:08:27 +0200 (Mon, 22 Jun 2009) $
Author:
Craig R. McClanahan, Jean-Francois Arcand

Field Summary
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, DEFAULT_ALGORITHM, devRandomSource, digest, distributable, domain, duplicates, entropy, expiredSessions, initialized, log, maxActive, maxInactiveInterval, mserver, oname, processExpiresFrequency, random, randomClass, randomIS, sessionAverageAliveTime, sessionCounter, sessionIdLength, sessionMaxAliveTime, sessions, sm, support
 
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, DESTROY_EVENT, INIT_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
 
Constructor Summary
StandardManager()
           
 
Method Summary
 void addLifecycleListener(LifecycleListener listener)
          Add a lifecycle event listener to this component.
 Session createSession(java.lang.String sessionId)
          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.
 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.
 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 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 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 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, backgroundProcess, changeSessionId, createEmptySession, createSession, destroy, expireSession, findSession, findSessions, generateSessionId, getActiveSessions, getAlgorithm, getClassName, getContainer, getCreationTime, getDigest, getDistributable, getDomain, getDuplicates, getEngine, getEntropy, getExpiredSessions, getJvmRoute, getLastAccessedTime, getMaxActive, getMaxInactiveInterval, getNewSession, getObjectName, getProcessExpiresFrequency, getProcessingTime, getRandom, getRandomBytes, getRandomClass, getRandomFile, getSession, getSessionAttribute, getSessionAverageAliveTime, getSessionCounter, getSessionIdLength, getSessionMaxAliveTime, init, listSessionIds, postDeregister, postRegister, preDeregister, preRegister, processExpires, remove, removePropertyChangeListener, setAlgorithm, setDistributable, setDuplicates, setEntropy, setExpiredSessions, setMaxActive, setMaxInactiveInterval, setProcessExpiresFrequency, setProcessingTime, setRandomClass, setRandomFile, setSessionAverageAliveTime, setSessionCounter, setSessionIdLength, setSessionMaxAliveTime
 
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.


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

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(java.lang.String sessionId)
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
Parameters:
sessionId - The session id which should be used to create the new session; if null, a new session id will be generated
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.



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