Package org.apache.catalina.util
Class SessionIdGeneratorBase
- java.lang.Object
-
- org.apache.catalina.util.LifecycleBase
-
- org.apache.catalina.util.SessionIdGeneratorBase
-
- All Implemented Interfaces:
Lifecycle
,SessionIdGenerator
- Direct Known Subclasses:
StandardSessionIdGenerator
public abstract class SessionIdGeneratorBase extends LifecycleBase implements SessionIdGenerator
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle
Lifecycle.SingleUse
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DEFAULT_SECURE_RANDOM_ALGORITHM
-
Fields inherited from interface org.apache.catalina.Lifecycle
AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT
-
-
Constructor Summary
Constructors Constructor Description SessionIdGeneratorBase()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
destroyInternal()
Sub-classes implement this method to perform any instance destruction required.java.lang.String
generateSessionId()
Generate and return a new session identifier.java.lang.String
getJvmRoute()
Return the node identifier associated with this node which will be included in the generated session ID.protected void
getRandomBytes(byte[] bytes)
java.lang.String
getSecureRandomAlgorithm()
Get the name of the algorithm used to create theSecureRandom
instances which generate new session IDs.java.lang.String
getSecureRandomClass()
Get the class name of theSecureRandom
implementation used to generate session IDs.java.lang.String
getSecureRandomProvider()
Get the name of the provider used to create theSecureRandom
instances which generate new session IDs.int
getSessionIdLength()
Return the number of bytes for a session IDprotected void
initInternal()
Sub-classes implement this method to perform any instance initialisation required.void
setJvmRoute(java.lang.String jvmRoute)
Specify the node identifier associated with this node which will be included in the generated session ID.void
setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
Specify a non-default algorithm to use to create instances ofSecureRandom
which are used to generate session IDs.void
setSecureRandomClass(java.lang.String secureRandomClass)
Specify a non-defaultSecureRandom
implementation to use.void
setSecureRandomProvider(java.lang.String secureRandomProvider)
Specify a non-default provider to use to create instances ofSecureRandom
which are used to generate session IDs.void
setSessionIdLength(int sessionIdLength)
Specify the number of bytes for a session IDprotected void
startInternal()
Sub-classes must ensure that the state is changed toLifecycleState.STARTING
during the execution of this method.protected void
stopInternal()
Sub-classes must ensure that the state is changed toLifecycleState.STOPPING
during the execution of this method.-
Methods inherited from class org.apache.catalina.util.LifecycleBase
addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop
-
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.SessionIdGenerator
generateSessionId
-
-
-
-
Method Detail
-
getSecureRandomClass
public java.lang.String getSecureRandomClass()
Get the class name of theSecureRandom
implementation used to generate session IDs.- Returns:
- The fully qualified class name.
null
indicates that the JRE providedSecureRandom
implementation will be used
-
setSecureRandomClass
public void setSecureRandomClass(java.lang.String secureRandomClass)
Specify a non-defaultSecureRandom
implementation to use. The implementation must be self-seeding and have a zero-argument constructor. If not specified, an instance ofSecureRandom
will be generated.- Parameters:
secureRandomClass
- The fully-qualified class name
-
getSecureRandomAlgorithm
public java.lang.String getSecureRandomAlgorithm()
Get the name of the algorithm used to create theSecureRandom
instances which generate new session IDs.- Returns:
- The name of the algorithm.
null
or the empty string means that platform default will be used
-
setSecureRandomAlgorithm
public void setSecureRandomAlgorithm(java.lang.String secureRandomAlgorithm)
Specify a non-default algorithm to use to create instances ofSecureRandom
which are used to generate session IDs. If no algorithm is specified, SHA1PRNG will be used. If SHA1PRNG is not available, the platform default will be used. To use the platform default (which may be SHA1PRNG), specifynull
or the empty string. If an invalid algorithm and/or provider is specified theSecureRandom
instances will be created using the defaults for thisSessionIdGenerator
implementation. If that fails, theSecureRandom
instances will be created using platform defaults.- Parameters:
secureRandomAlgorithm
- The name of the algorithm
-
getSecureRandomProvider
public java.lang.String getSecureRandomProvider()
Get the name of the provider used to create theSecureRandom
instances which generate new session IDs.- Returns:
- The name of the provider.
null
or the empty string means that platform default will be used
-
setSecureRandomProvider
public void setSecureRandomProvider(java.lang.String secureRandomProvider)
Specify a non-default provider to use to create instances ofSecureRandom
which are used to generate session IDs. If no provider is specified, the platform default is used. To use the platform default specifynull
or the empty string. If an invalid algorithm and/or provider is specified theSecureRandom
instances will be created using the defaults for thisSessionIdGenerator
implementation. If that fails, theSecureRandom
instances will be created using platform defaults.- Parameters:
secureRandomProvider
- The name of the provider
-
getJvmRoute
public java.lang.String getJvmRoute()
Return the node identifier associated with this node which will be included in the generated session ID.- Specified by:
getJvmRoute
in interfaceSessionIdGenerator
- Returns:
- the node identifier associated with this node which will be included in the generated session ID.
-
setJvmRoute
public void setJvmRoute(java.lang.String jvmRoute)
Specify the node identifier associated with this node which will be included in the generated session ID.- Specified by:
setJvmRoute
in interfaceSessionIdGenerator
- Parameters:
jvmRoute
- The node identifier
-
getSessionIdLength
public int getSessionIdLength()
Return the number of bytes for a session ID- Specified by:
getSessionIdLength
in interfaceSessionIdGenerator
- Returns:
- the number of bytes for a session ID
-
setSessionIdLength
public void setSessionIdLength(int sessionIdLength)
Specify the number of bytes for a session ID- Specified by:
setSessionIdLength
in interfaceSessionIdGenerator
- Parameters:
sessionIdLength
- Number of bytes
-
generateSessionId
public java.lang.String generateSessionId()
Generate and return a new session identifier.- Specified by:
generateSessionId
in interfaceSessionIdGenerator
- Returns:
- the newly generated session id
-
getRandomBytes
protected void getRandomBytes(byte[] bytes)
-
initInternal
protected void initInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes implement this method to perform any instance initialisation required.- Specified by:
initInternal
in classLifecycleBase
- Throws:
LifecycleException
- If the initialisation fails
-
startInternal
protected void startInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes must ensure that the state is changed toLifecycleState.STARTING
during the execution of this method. Changing state will trigger theLifecycle.START_EVENT
event. If a component fails to start it may either throw aLifecycleException
which will cause it's parent to fail to start or it can place itself in the error state in which caseLifecycleBase.stop()
will be called on the failed component but the parent component will continue to start normally.- Specified by:
startInternal
in classLifecycleBase
- Throws:
LifecycleException
- Start error occurred
-
stopInternal
protected void stopInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes must ensure that the state is changed toLifecycleState.STOPPING
during the execution of this method. Changing state will trigger theLifecycle.STOP_EVENT
event.- Specified by:
stopInternal
in classLifecycleBase
- Throws:
LifecycleException
- Stop error occurred
-
destroyInternal
protected void destroyInternal() throws LifecycleException
Description copied from class:LifecycleBase
Sub-classes implement this method to perform any instance destruction required.- Specified by:
destroyInternal
in classLifecycleBase
- Throws:
LifecycleException
- If the destruction fails
-
-