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`