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 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
`SessionIdGeneratorBase()`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `destroyInternal()` Sub-classes implement this method to perform any instance destruction required.
`String` `generateSessionId()` Generate and return a new session identifier.
`String` `getJvmRoute()` Return the node identifier associated with this node which will be included in the generated session ID.
`protected void` `getRandomBytes​(byte[] bytes)`
`String` `getSecureRandomAlgorithm()` Get the name of the algorithm used to create the `SecureRandom` instances which generate new session IDs.
`String` `getSecureRandomClass()` Get the class name of the `SecureRandom` implementation used to generate session IDs.
`String` `getSecureRandomProvider()` Get the name of the provider used to create the `SecureRandom` instances which generate new session IDs.
`int` `getSessionIdLength()` Return the number of bytes for a session ID
`protected void` `initInternal()` Sub-classes implement this method to perform any instance initialisation required.
`void` `setJvmRoute​(String jvmRoute)` Specify the node identifier associated with this node which will be included in the generated session ID.
`void` `setSecureRandomAlgorithm​(String secureRandomAlgorithm)` Specify a non-default algorithm to use to create instances of `SecureRandom` which are used to generate session IDs.
`void` `setSecureRandomClass​(String secureRandomClass)` Specify a non-default `SecureRandom` implementation to use.
`void` `setSecureRandomProvider​(String secureRandomProvider)` Specify a non-default provider to use to create instances of `SecureRandom` which are used to generate session IDs.
`void` `setSessionIdLength​(int sessionIdLength)` Specify the number of bytes for a session ID
`protected void` `startInternal()` Sub-classes must ensure that the state is changed to `LifecycleState.STARTING` during the execution of this method.
`protected void` `stopInternal()` Sub-classes must ensure that the state is changed to `LifecycleState.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`

### Constructor Detail

#### SessionIdGeneratorBase

    public SessionIdGeneratorBase()

### Method Detail

#### getSecureRandomClass

    public String getSecureRandomClass()

Get the class name of the `SecureRandom` implementation used to generate session IDs.

Returns:
  The fully qualified class name. `null` indicates that the JRE provided `SecureRandom` implementation will be used

#### setSecureRandomClass

    public void setSecureRandomClass​(String secureRandomClass)

Specify a non-default `SecureRandom` implementation to use. The implementation must be self-seeding and have a zero-argument constructor. If not specified, an instance of `SecureRandom` will be generated.

Parameters:
  `secureRandomClass` - The fully-qualified class name

#### getSecureRandomAlgorithm

    public String getSecureRandomAlgorithm()

Get the name of the algorithm used to create the `SecureRandom` 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​(String secureRandomAlgorithm)

Specify a non-default algorithm to use to create instances of `SecureRandom` which are used to generate session IDs. If no algorithm is specified, SHA1PRNG is used. To use the platform default (which may be SHA1PRNG), specify `null` or the empty string. If an invalid algorithm and/or provider is specified the `SecureRandom` instances will be created using the defaults for this `SessionIdGenerator` implementation. If that fails, the `SecureRandom` instances will be created using platform defaults.

Parameters:
  `secureRandomAlgorithm` - The name of the algorithm

#### getSecureRandomProvider

    public String getSecureRandomProvider()

Get the name of the provider used to create the `SecureRandom` 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​(String secureRandomProvider)

Specify a non-default provider to use to create instances of `SecureRandom` which are used to generate session IDs. If no provider is specified, the platform default is used. To use the platform default specify `null` or the empty string. If an invalid algorithm and/or provider is specified the `SecureRandom` instances will be created using the defaults for this `SessionIdGenerator` implementation. If that fails, the `SecureRandom` instances will be created using platform defaults.

Parameters:
  `secureRandomProvider` - The name of the provider

#### getJvmRoute

    public String getJvmRoute()

Return the node identifier associated with this node which will be included in the generated session ID.

Specified by:
  `getJvmRoute` in interface `SessionIdGenerator`
Returns:
  the node identifier associated with this node which will be included in the generated session ID.

#### setJvmRoute

    public void setJvmRoute​(String jvmRoute)

Specify the node identifier associated with this node which will be included in the generated session ID.

Specified by:
  `setJvmRoute` in interface `SessionIdGenerator`
Parameters:
  `jvmRoute` - The node identifier

#### getSessionIdLength

    public int getSessionIdLength()

Return the number of bytes for a session ID

Specified by:
  `getSessionIdLength` in interface `SessionIdGenerator`
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 interface `SessionIdGenerator`
Parameters:
  `sessionIdLength` - Number of bytes

#### generateSessionId

    public String generateSessionId()

Generate and return a new session identifier.

Specified by:
  `generateSessionId` in interface `SessionIdGenerator`
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 class `LifecycleBase`
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 to `LifecycleState.STARTING` during the execution of this method. Changing state will trigger the `Lifecycle.START_EVENT` event. If a component fails to start it may either throw a `LifecycleException` which will cause it's parent to fail to start or it can place itself in the error state in which case `LifecycleBase.stop()` will be called on the failed component but the parent component will continue to start normally.

Specified by:
  `startInternal` in class `LifecycleBase`
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 to `LifecycleState.STOPPING` during the execution of this method. Changing state will trigger the `Lifecycle.STOP_EVENT` event.

Specified by:
  `stopInternal` in class `LifecycleBase`
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 class `LifecycleBase`
Throws:
  `LifecycleException` - If the destruction fails