Package org.apache.catalina.session

# Class StoreBase

java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.session.StoreBase

All Implemented Interfaces:
  `Lifecycle`, `Store`

Direct Known Subclasses:
  `FileStore`, `JDBCStore`

public abstract class StoreBase extends LifecycleBase implements Store
Abstract implementation of the `Store` interface to support most of the functionality required by a `Store`.

Author:
  Bip Thelin

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

`Lifecycle.SingleUse`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Manager`
`manager`
The Manager with which this Store is associated.
`protected static final StringManager`
`sm`
The string manager for this package.
`protected static final String`
`storeName`
Name to register for this Store, used for logging.
`protected final PropertyChangeSupport`
`support`
The property change support for this component.

### 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
`StoreBase()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addPropertyChangeListener(PropertyChangeListener listener)`
Add a property change listener to this component.
`protected void`
`destroyInternal()`
Sub-classes implement this method to perform any instance destruction required.
`String[]`
`expiredKeys()`
Get only those keys of sessions, that are saved in the Store and are to be expired.
`Manager`
`getManager()`
`protected ObjectInputStream`
`getObjectInputStream(InputStream is)`
Create the object input stream to use to read a session from the store.
`String`
`getStoreName()`
`protected void`
`initInternal()`
Sub-classes implement this method to perform any instance initialisation required.
`void`
`processExpires()`
Called by our background reaper thread to check if Sessions saved in our store are subject of being expired.
`void`
`removePropertyChangeListener(PropertyChangeListener listener)`
Remove a property change listener from this component.
`void`
`setManager(Manager manager)`
Set the Manager associated with this Store.
`protected void`
`startInternal()`
Start this component and implement the requirements of `LifecycleBase.startInternal()`.
`protected void`
`stopInternal()`
Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.
`String`
`toString()`

### 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, wait, wait, wait`

### Methods inherited from interface org.apache.catalina.Store

`clear, getSize, keys, load, remove, save`

## Field Details

### storeName

protected static final String storeName
Name to register for this Store, used for logging.

See Also:
  - Constant Field Values

### support

protected final PropertyChangeSupport support
The property change support for this component.

### sm

protected static final StringManager sm
The string manager for this package.

### manager

protected Manager manager
The Manager with which this Store is associated.

## Constructor Details

### StoreBase

public StoreBase()

## Method Details

### getStoreName

public String getStoreName()

Returns:
  the name for this Store, used for logging.

### setManager

public void setManager(Manager manager)
Description copied from interface: `Store`
Set the Manager associated with this Store.

Specified by:
  `setManager` in interface `Store`
Parameters:
  `manager` - The Manager which will use this Store.

### getManager

public Manager getManager()

Specified by:
  `getManager` in interface `Store`
Returns:
  the Manager instance associated with this Store.

### addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Description copied from interface: `Store`
Add a property change listener to this component.

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

### removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
Description copied from interface: `Store`
Remove a property change listener from this component.

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

### expiredKeys

public String[] expiredKeys() throws IOException
Get only those keys of sessions, that are saved in the Store and are to be expired.

Returns:
  list of session keys, that are to be expired
Throws:
  `IOException` - if an input-/output error occurred

### processExpires

public void processExpires()
Called by our background reaper thread to check if Sessions saved in our store are subject of being expired. If so expire the Session and remove it from the Store.

### getObjectInputStream

protected ObjectInputStream getObjectInputStream(InputStream is) throws IOException
Create the object input stream to use to read a session from the store. Sub-classes must have set the thread context class loader before calling this method.

Parameters:
  `is` - The input stream provided by the sub-class that will provide the data for a session
Returns:
  An appropriately configured ObjectInputStream from which the session can be read.
Throws:
  `IOException` - if a problem occurs creating the ObjectInputStream

### initInternal

protected void initInternal()
Description copied from class: `LifecycleBase`
Sub-classes implement this method to perform any instance initialisation required.

Specified by:
  `initInternal` in class `LifecycleBase`

### startInternal

protected void startInternal() throws LifecycleException
Start this component and implement the requirements of `LifecycleBase.startInternal()`.

Specified by:
  `startInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

### stopInternal

protected void stopInternal() throws LifecycleException
Stop this component and implement the requirements of `LifecycleBase.stopInternal()`.

Specified by:
  `stopInternal` in class `LifecycleBase`
Throws:
  `LifecycleException` - if this component detects a fatal error that prevents this component from being used

### destroyInternal

protected void destroyInternal()
Description copied from class: `LifecycleBase`
Sub-classes implement this method to perform any instance destruction required.

Specified by:
  `destroyInternal` in class `LifecycleBase`

### toString

public String toString()

Overrides:
  `toString` in class `Object`