Package org.apache.catalina.session

# Class DataSourceStore

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

All Implemented Interfaces:
  `Lifecycle`, `Store`

public class DataSourceStore extends StoreBase
Implementation of the `Store` interface that stores serialized session objects in a database. Sessions that are saved are still subject to being expired based on inactivity.

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 DataSource`
  `dataSource`
  DataSource to use
  `protected String`
  `dataSourceName`
  name of the JNDI resource
  `protected String`
  `sessionAppCol`
  Column to use for /Engine/Host/Context name
  `protected String`
  `sessionDataCol`
  Data column to use.
  `protected String`
  `sessionIdCol`
  Id column to use.
  `protected String`
  `sessionLastAccessedCol`
  Last Accessed column to use.
  `protected String`
  `sessionMaxInactiveCol`
  Max Inactive column to use.
  `protected String`
  `sessionTable`
  Table to use.
  `protected String`
  `sessionValidCol`
  `Is Valid` column to use.
  `protected static final String`
  `storeName`
  Name to register for this Store, used for logging.

  ### Fields inherited from class org.apache.catalina.session.StoreBase

  `manager, sm, support`

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Remove all Sessions from this Store.
  `protected void`
  `close(Connection dbConnection)`
  Close the specified database connection.
  `String[]`
  `expiredKeys()`
  Get only those keys of sessions, that are saved in the Store and are to be expired.
  `protected Connection`
  `getConnection()`
  Check the connection associated with this store, if it's `null` or closed try to reopen it.
  `String`
  `getDataSourceName()`
  `boolean`
  `getLocalDataSource()`
  `String`
  `getName()`
  `String`
  `getSessionAppCol()`
  `String`
  `getSessionDataCol()`
  `String`
  `getSessionIdCol()`
  `String`
  `getSessionLastAccessedCol()`
  `String`
  `getSessionMaxInactiveCol()`
  `String`
  `getSessionTable()`
  `String`
  `getSessionValidCol()`
  `int`
  `getSize()`
  `String`
  `getStoreName()`
  `String[]`
  `keys()`
  `Session`
  `load(String id)`
  Load and return the Session associated with the specified session identifier from this Store, without removing it.
  `protected Connection`
  `open()`
  Open (if necessary) and return a database connection for use by this Store.
  `protected void`
  `release(Connection conn)`
  Release the connection, if it is associated with a connection pool.
  `void`
  `remove(String id)`
  Remove the Session with the specified session identifier from this Store, if present.
  `void`
  `save(Session session)`
  Save the specified Session into this Store.
  `void`
  `setDataSourceName(String dataSourceName)`
  Set the JNDI name of a DataSource-factory to use for db access
  `void`
  `setLocalDataSource(boolean localDataSource)`
  Set to `true` to cause the datasource to be looked up in the webapp JNDI Context.
  `void`
  `setSessionAppCol(String sessionAppCol)`
  Set the App column for the table.
  `void`
  `setSessionDataCol(String sessionDataCol)`
  Set the Data column for the table
  `void`
  `setSessionIdCol(String sessionIdCol)`
  Set the Id column for the table.
  `void`
  `setSessionLastAccessedCol(String sessionLastAccessedCol)`
  Set the `Last Accessed` column for the table
  `void`
  `setSessionMaxInactiveCol(String sessionMaxInactiveCol)`
  Set the `Max Inactive` column for the table
  `void`
  `setSessionTable(String sessionTable)`
  Set the table for this Store.
  `void`
  `setSessionValidCol(String sessionValidCol)`
  Set the `Is Valid` column for the table

  ### Methods inherited from class org.apache.catalina.session.StoreBase

  `addPropertyChangeListener, destroyInternal, getManager, getObjectInputStream, initInternal, processExpires, removePropertyChangeListener, setManager, startInternal, stopInternal, 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`

- ## Field Details

  - ### storeName

    protected static final String storeName
    Name to register for this Store, used for logging.
    See Also:
      - Constant Field Values

  - ### dataSourceName

    protected String dataSourceName
    name of the JNDI resource

  - ### dataSource

    protected DataSource dataSource
    DataSource to use

  - ### sessionTable

    protected String sessionTable
    Table to use.

  - ### sessionAppCol

    protected String sessionAppCol
    Column to use for /Engine/Host/Context name

  - ### sessionIdCol

    protected String sessionIdCol
    Id column to use.

  - ### sessionDataCol

    protected String sessionDataCol
    Data column to use.

  - ### sessionValidCol

    protected String sessionValidCol
    `Is Valid` column to use.

  - ### sessionMaxInactiveCol

    protected String sessionMaxInactiveCol
    Max Inactive column to use.

  - ### sessionLastAccessedCol

    protected String sessionLastAccessedCol
    Last Accessed column to use.

- ## Constructor Details

  - ### DataSourceStore

    public DataSourceStore()

- ## Method Details

  - ### getName

    public String getName()
    Returns:
      the name for this instance (built from container name)

  - ### getStoreName

    public String getStoreName()
    Overrides:
      `getStoreName` in class `StoreBase`
    Returns:
      the name for this Store, used for logging.

  - ### setSessionTable

    public void setSessionTable(String sessionTable)
    Set the table for this Store.
    Parameters:
      `sessionTable` - The new table

  - ### getSessionTable

    public String getSessionTable()
    Returns:
      the table for this Store.

  - ### setSessionAppCol

    public void setSessionAppCol(String sessionAppCol)
    Set the App column for the table.
    Parameters:
      `sessionAppCol` - the column name

  - ### getSessionAppCol

    public String getSessionAppCol()
    Returns:
      the web application name column for the table.

  - ### setSessionIdCol

    public void setSessionIdCol(String sessionIdCol)
    Set the Id column for the table.
    Parameters:
      `sessionIdCol` - the column name

  - ### getSessionIdCol

    public String getSessionIdCol()
    Returns:
      the Id column for the table.

  - ### setSessionDataCol

    public void setSessionDataCol(String sessionDataCol)
    Set the Data column for the table
    Parameters:
      `sessionDataCol` - the column name

  - ### getSessionDataCol

    public String getSessionDataCol()
    Returns:
      the data column for the table

  - ### setSessionValidCol

    public void setSessionValidCol(String sessionValidCol)
    Set the `Is Valid` column for the table
    Parameters:
      `sessionValidCol` - The column name

  - ### getSessionValidCol

    public String getSessionValidCol()
    Returns:
      the `Is Valid` column

  - ### setSessionMaxInactiveCol

    public void setSessionMaxInactiveCol(String sessionMaxInactiveCol)
    Set the `Max Inactive` column for the table
    Parameters:
      `sessionMaxInactiveCol` - The column name

  - ### getSessionMaxInactiveCol

    public String getSessionMaxInactiveCol()
    Returns:
      the `Max Inactive` column

  - ### setSessionLastAccessedCol

    public void setSessionLastAccessedCol(String sessionLastAccessedCol)
    Set the `Last Accessed` column for the table
    Parameters:
      `sessionLastAccessedCol` - The column name

  - ### getSessionLastAccessedCol

    public String getSessionLastAccessedCol()
    Returns:
      the `Last Accessed` column

  - ### setDataSourceName

    public void setDataSourceName(String dataSourceName)
    Set the JNDI name of a DataSource-factory to use for db access
    Parameters:
      `dataSourceName` - The JNDI name of the DataSource-factory

  - ### getDataSourceName

    public String getDataSourceName()
    Returns:
      the name of the JNDI DataSource-factory

  - ### getLocalDataSource

    public boolean getLocalDataSource()
    Returns:
      if the datasource will be looked up in the webapp JNDI Context.

  - ### setLocalDataSource

    public void setLocalDataSource(boolean localDataSource)
    Set to `true` to cause the datasource to be looked up in the webapp JNDI Context.
    Parameters:
      `localDataSource` - the new flag value

  - ### expiredKeys

    public String[] expiredKeys() throws IOException
    Description copied from class: `StoreBase`
    Get only those keys of sessions, that are saved in the Store and are to be expired.
    Overrides:
      `expiredKeys` in class `StoreBase`
    Returns:
      list of session keys, that are to be expired
    Throws:
      `IOException` - if an input-/output error occurred

  - ### keys

    public String[] keys() throws IOException
    Returns:
      an array containing the session identifiers of all Sessions currently saved in this Store. If there are no such Sessions, a zero-length array is returned.
    Throws:
      `IOException` - if an input/output error occurred

  - ### getSize

    public int getSize() throws IOException
    Returns:
      the number of Sessions present in this Store.
    Throws:
      `IOException` - if an input/output error occurs

  - ### load

    public Session load(String id) throws ClassNotFoundException, IOException
    Description copied from interface: `Store`
    Load and return the Session associated with the specified session identifier from this Store, without removing it. If there is no such stored Session, return `null`.
    Parameters:
      `id` - Session identifier of the session to load
    Returns:
      the loaded Session instance
    Throws:
      `ClassNotFoundException` - if a deserialization error occurs
      `IOException` - if an input/output error occurs

  - ### remove

    public void remove(String id) throws IOException
    Description copied from interface: `Store`
    Remove the Session with the specified session identifier from this Store, if present. If no such Session is present, this method takes no action.
    Parameters:
      `id` - Session identifier of the Session to be removed
    Throws:
      `IOException` - if an input/output error occurs

  - ### clear

    public void clear() throws IOException
    Description copied from interface: `Store`
    Remove all Sessions from this Store.
    Throws:
      `IOException` - if an input/output error occurs

  - ### save

    public void save(Session session) throws IOException
    Description copied from interface: `Store`
    Save the specified Session into this Store. Any previously saved information for the associated session identifier is replaced.
    Parameters:
      `session` - Session to be saved
    Throws:
      `IOException` - if an input/output error occurs

  - ### getConnection

    protected Connection getConnection()
    Check the connection associated with this store, if it's `null` or closed try to reopen it. Returns `null` if the connection could not be established.
    Returns:
      `Connection` if the connection succeeded

  - ### open

    protected Connection open() throws SQLException
    Open (if necessary) and return a database connection for use by this Store.
    Returns:
      database connection ready to use
    Throws:
      `SQLException` - if a database error occurs

  - ### close

    protected void close(Connection dbConnection)
    Close the specified database connection.
    Parameters:
      `dbConnection` - The connection to be closed

  - ### release

    protected void release(Connection conn)
    Release the connection, if it is associated with a connection pool.
    Parameters:
      `conn` - The connection to be released