org.apache.catalina.session
Class ManagerBase

java.lang.Object
  extended byorg.apache.catalina.session.ManagerBase
All Implemented Interfaces:
Manager
Direct Known Subclasses:
PersistentManagerBase, StandardManager

public abstract class ManagerBase
extends java.lang.Object
implements Manager

Minimal implementation of the Manager interface that supports no session persistence or distributable capabilities. This class may be subclassed to create more sophisticated Manager implementations.

Version:
$Revision: 1.20 $ $Date: 2004/08/26 21:39:08 $
Author:
Craig R. McClanahan

Field Summary
protected  java.lang.String algorithm
          The message digest algorithm to be used when generating session identifiers.
protected  Container container
          The Container with which this Manager is associated.
protected  int debug
          The debugging detail level for this component.
protected static java.lang.String DEFAULT_ALGORITHM
          The default message digest algorithm to use if we cannot use the requested one.
protected  DefaultContext defaultContext
          The DefaultContext with which this Manager is associated.
protected  java.security.MessageDigest digest
          Return the MessageDigest implementation to be used when creating session identifiers.
protected  boolean distributable
          The distributable flag for Sessions created by this Manager.
protected  int duplicates
           
protected  java.lang.String entropy
          A String initialization parameter used to increase the entropy of the initialization of our random number generator.
protected  int maxActive
           
protected  int maxInactiveInterval
          The default maximum inactive interval for Sessions created by this Manager.
protected static java.lang.String name
          The descriptive name of this Manager implementation (for logging).
protected  java.util.Random random
          A random number generator to use when generating session identifiers.
protected  java.lang.String randomClass
          The Java class name of the random number generator class to be used when generating session identifiers.
protected  java.util.ArrayList recycled
          The set of previously recycled Sessions for this Manager.
protected static int SESSION_ID_BYTES
          The number of random bytes to include when generating a session identifier.
protected  int sessionCounter
           
protected  java.util.HashMap sessions
          The set of currently active Sessions for this Manager, keyed by session identifier.
protected static StringManager sm
          The string manager for this package.
protected  java.beans.PropertyChangeSupport support
          The property change support for this component.
 
Constructor Summary
ManagerBase()
           
 
Method Summary
 void add(Session session)
          Add this Session to the set of active Sessions for this Manager.
 void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
          Add a property change listener to this component.
 Session createEmptySession()
          Get a session from the recycled ones or create a new empty one.
 Session createSession()
          Construct and return a new session object, based on the default settings specified by this Manager's properties.
 void expireSession(java.lang.String sessionId)
           
 Session findSession(java.lang.String id)
          Return the active Session, associated with this Manager, with the specified session id (if any); otherwise return null.
 Session[] findSessions()
          Return the set of active Sessions associated with this Manager.
protected  java.lang.String generateSessionId()
          Generate and return a new session identifier.
 int getActiveSessions()
          Returns the number of active sessions
 java.lang.String getAlgorithm()
          Return the message digest algorithm for this Manager.
 Container getContainer()
          Return the Container with which this Manager is associated.
 int getDebug()
          Return the debugging detail level for this component.
 DefaultContext getDefaultContext()
          Return the DefaultContext with which this Manager is associated.
 java.security.MessageDigest getDigest()
          Return the MessageDigest object to be used for calculating session identifiers.
 boolean getDistributable()
          Return the distributable flag for the sessions supported by this Manager.
 int getDuplicates()
          Number of duplicated session IDs generated by the random source.
 Engine getEngine()
          Retrieve the enclosing Engine for this Manager.
 java.lang.String getEntropy()
          Return the entropy increaser value, or compute a semi-useful value if this String has not yet been set.
 java.lang.String getInfo()
          Return descriptive information about this Manager implementation and the corresponding version number, in the format <description>/<version>.
 java.lang.String getJvmRoute()
          Retrieve the JvmRoute for the enclosing Engine.
 java.lang.String getLastAccessedTime(java.lang.String sessionId)
           
 int getMaxActive()
          Max number of concurent active sessions
 int getMaxInactiveInterval()
          Return the default maximum inactive interval (in seconds) for Sessions created by this Manager.
 java.lang.String getName()
          Return the descriptive short name of this Manager implementation.
 java.util.Random getRandom()
          Return the random number generator instance we should use for generating session identifiers.
 java.lang.String getRandomClass()
          Return the random number generator class name.
 java.lang.String getSessionAttribute(java.lang.String sessionId, java.lang.String key)
          For debugging: get a session attribute
 int getSessionCounter()
          Total sessions created by this manager.
 java.lang.String listSessionIds()
          For debugging: return a list of all session ids currently active
 void remove(Session session)
          Remove this Session from the active Sessions for this Manager.
 void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
          Remove a property change listener from this component.
 void setAlgorithm(java.lang.String algorithm)
          Set the message digest algorithm for this Manager.
 void setContainer(Container container)
          Set the Container with which this Manager is associated.
 void setDebug(int debug)
          Set the debugging detail level for this component.
 void setDefaultContext(DefaultContext defaultContext)
          Set the DefaultContext with which this Manager is associated.
 void setDistributable(boolean distributable)
          Set the distributable flag for the sessions supported by this Manager.
 void setDuplicates(int duplicates)
           
 void setEntropy(java.lang.String entropy)
          Set the entropy increaser value.
 void setMaxActive(int maxActive)
           
 void setMaxInactiveInterval(int interval)
          Set the default maximum inactive interval (in seconds) for Sessions created by this Manager.
 void setRandomClass(java.lang.String randomClass)
          Set the random number generator class name.
 void setSessionCounter(int sessionCounter)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.catalina.Manager
load, unload
 

Field Detail

DEFAULT_ALGORITHM

protected static final java.lang.String DEFAULT_ALGORITHM
The default message digest algorithm to use if we cannot use the requested one.

See Also:
Constant Field Values

SESSION_ID_BYTES

protected static final int SESSION_ID_BYTES
The number of random bytes to include when generating a session identifier.

See Also:
Constant Field Values

algorithm

protected java.lang.String algorithm
The message digest algorithm to be used when generating session identifiers. This must be an algorithm supported by the java.security.MessageDigest class on your platform.


container

protected Container container
The Container with which this Manager is associated.


debug

protected int debug
The debugging detail level for this component.


defaultContext

protected DefaultContext defaultContext
The DefaultContext with which this Manager is associated.


digest

protected java.security.MessageDigest digest
Return the MessageDigest implementation to be used when creating session identifiers.


distributable

protected boolean distributable
The distributable flag for Sessions created by this Manager. If this flag is set to true, any user attributes added to a session controlled by this Manager must be Serializable.


entropy

protected java.lang.String entropy
A String initialization parameter used to increase the entropy of the initialization of our random number generator.


maxInactiveInterval

protected int maxInactiveInterval
The default maximum inactive interval for Sessions created by this Manager.


name

protected static java.lang.String name
The descriptive name of this Manager implementation (for logging).


random

protected java.util.Random random
A random number generator to use when generating session identifiers.


randomClass

protected java.lang.String randomClass
The Java class name of the random number generator class to be used when generating session identifiers.


recycled

protected java.util.ArrayList recycled
The set of previously recycled Sessions for this Manager.


sessions

protected java.util.HashMap sessions
The set of currently active Sessions for this Manager, keyed by session identifier.


sessionCounter

protected int sessionCounter

maxActive

protected int maxActive

duplicates

protected int duplicates

sm

protected static StringManager sm
The string manager for this package.


support

protected java.beans.PropertyChangeSupport support
The property change support for this component.

Constructor Detail

ManagerBase

public ManagerBase()
Method Detail

getAlgorithm

public java.lang.String getAlgorithm()
Return the message digest algorithm for this Manager.


setAlgorithm

public void setAlgorithm(java.lang.String algorithm)
Set the message digest algorithm for this Manager.

Parameters:
algorithm - The new message digest algorithm

getContainer

public Container getContainer()
Return the Container with which this Manager is associated.

Specified by:
getContainer in interface Manager

setContainer

public void setContainer(Container container)
Set the Container with which this Manager is associated.

Specified by:
setContainer in interface Manager
Parameters:
container - The newly associated Container

getDefaultContext

public DefaultContext getDefaultContext()
Return the DefaultContext with which this Manager is associated.

Specified by:
getDefaultContext in interface Manager

setDefaultContext

public void setDefaultContext(DefaultContext defaultContext)
Set the DefaultContext with which this Manager is associated.

Specified by:
setDefaultContext in interface Manager
Parameters:
defaultContext - The newly associated DefaultContext

getDebug

public int getDebug()
Return the debugging detail level for this component.


setDebug

public void setDebug(int debug)
Set the debugging detail level for this component.

Parameters:
debug - The new debugging detail level

getDigest

public java.security.MessageDigest getDigest()
Return the MessageDigest object to be used for calculating session identifiers. If none has been created yet, initialize one the first time this method is called.


getDistributable

public boolean getDistributable()
Return the distributable flag for the sessions supported by this Manager.

Specified by:
getDistributable in interface Manager

setDistributable

public void setDistributable(boolean distributable)
Set the distributable flag for the sessions supported by this Manager. If this flag is set, all user data objects added to sessions associated with this manager must implement Serializable.

Specified by:
setDistributable in interface Manager
Parameters:
distributable - The new distributable flag

getEntropy

public java.lang.String getEntropy()
Return the entropy increaser value, or compute a semi-useful value if this String has not yet been set.


setEntropy

public void setEntropy(java.lang.String entropy)
Set the entropy increaser value.

Parameters:
entropy - The new entropy increaser value

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

getMaxInactiveInterval

public int getMaxInactiveInterval()
Return the default maximum inactive interval (in seconds) for Sessions created by this Manager.

Specified by:
getMaxInactiveInterval in interface Manager

setMaxInactiveInterval

public void setMaxInactiveInterval(int interval)
Set the default maximum inactive interval (in seconds) for Sessions created by this Manager.

Specified by:
setMaxInactiveInterval in interface Manager
Parameters:
interval - The new default value

getName

public java.lang.String getName()
Return the descriptive short name of this Manager implementation.


getRandom

public java.util.Random getRandom()
Return the random number generator instance we should use for generating session identifiers. If there is no such generator currently defined, construct and seed a new one.


getRandomClass

public java.lang.String getRandomClass()
Return the random number generator class name.


setRandomClass

public void setRandomClass(java.lang.String randomClass)
Set the random number generator class name.

Parameters:
randomClass - The new random number generator class name

add

public void add(Session session)
Add this Session to the set of active Sessions for this Manager.

Specified by:
add in interface Manager
Parameters:
session - Session to be added

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a property change listener to this component.

Specified by:
addPropertyChangeListener in interface Manager
Parameters:
listener - The listener to add

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
Throws:
java.lang.IllegalStateException - if a new session cannot be instantiated for any reason

createEmptySession

public Session createEmptySession()
Get a session from the recycled ones or create a new empty one. The PersistentManager manager does not need to create session data because it reads it from the Store.

Specified by:
createEmptySession in interface Manager

findSession

public Session findSession(java.lang.String id)
                    throws java.io.IOException
Return the active Session, associated with this Manager, with the specified session id (if any); otherwise return null.

Specified by:
findSession in interface Manager
Parameters:
id - The session id for the session to be returned
Throws:
java.lang.IllegalStateException - if a new session cannot be instantiated for any reason
java.io.IOException - if an input/output error occurs while processing this request

findSessions

public Session[] findSessions()
Return the set of active Sessions associated with this Manager. If this Manager has no active Sessions, a zero-length array is returned.

Specified by:
findSessions in interface Manager

remove

public void remove(Session session)
Remove this Session from the active Sessions for this Manager.

Specified by:
remove in interface Manager
Parameters:
session - Session to be removed

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a property change listener from this component.

Specified by:
removePropertyChangeListener in interface Manager
Parameters:
listener - The listener to remove

generateSessionId

protected java.lang.String generateSessionId()
Generate and return a new session identifier.


getEngine

public Engine getEngine()
Retrieve the enclosing Engine for this Manager.

Returns:
an Engine object (or null).

getJvmRoute

public java.lang.String getJvmRoute()
Retrieve the JvmRoute for the enclosing Engine.

Returns:
the JvmRoute or null.

setSessionCounter

public void setSessionCounter(int sessionCounter)

getSessionCounter

public int getSessionCounter()
Total sessions created by this manager.

Returns:
sessions created

getDuplicates

public int getDuplicates()
Number of duplicated session IDs generated by the random source. Anything bigger than 0 means problems.

Returns:

setDuplicates

public void setDuplicates(int duplicates)

getActiveSessions

public int getActiveSessions()
Returns the number of active sessions

Returns:
number of sessions active

getMaxActive

public int getMaxActive()
Max number of concurent active sessions

Returns:

setMaxActive

public void setMaxActive(int maxActive)

listSessionIds

public java.lang.String listSessionIds()
For debugging: return a list of all session ids currently active


getSessionAttribute

public java.lang.String getSessionAttribute(java.lang.String sessionId,
                                            java.lang.String key)
For debugging: get a session attribute

Parameters:
sessionId -
key -
Returns:

expireSession

public void expireSession(java.lang.String sessionId)

getLastAccessedTime

public java.lang.String getLastAccessedTime(java.lang.String sessionId)


Copyright 2000-2002 Apache Software Foundation. All Rights Reserved.