Package org.apache.catalina.session

# Class DataSourceStore

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

All Implemented Interfaces:
  `Lifecycle`, `Store`

public class DataSourceStore extends JDBCStore
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 inherited from class org.apache.catalina.session.JDBCStore

`connectionName, connectionPassword, connectionURL, dataSource, dataSourceName, driver, driverName, preparedClearSql, preparedLoadSql, preparedRemoveSql, preparedSaveSql, preparedSizeSql, sessionAppCol, sessionDataCol, sessionIdCol, sessionLastAccessedCol, sessionMaxInactiveCol, sessionTable, sessionValidCol, storeName, threadName`

### 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 of the Sessions in 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.
`int`
`getSize()`
Return an integer containing a count of all Sessions currently saved in this Store.
`String[]`
`keys()`
`Session`
`load(String id)`
Load the Session associated with the id `id`.
`protected Connection`
`open()`
Open (if necessary) and return a database connection for use by this Store.
`void`
`remove(String id)`
Remove the Session with the specified session identifier from this Store, if present.
`void`
`save(Session session)`
Save a session to the Store.

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

`getConnection, getConnectionName, getConnectionPassword, getConnectionURL, getDataSourceName, getDriverName, getLocalDataSource, getName, getSessionAppCol, getSessionDataCol, getSessionIdCol, getSessionLastAccessedCol, getSessionMaxInactiveCol, getSessionTable, getSessionValidCol, getStoreName, getThreadName, release, setConnectionName, setConnectionPassword, setConnectionURL, setDataSourceName, setDriverName, setLocalDataSource, setSessionAppCol, setSessionDataCol, setSessionIdCol, setSessionLastAccessedCol, setSessionMaxInactiveCol, setSessionTable, setSessionValidCol, startInternal, stopInternal`

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

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

## Constructor Details

### DataSourceStore

public DataSourceStore()

## Method Details

### 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 `JDBCStore`
Returns:
  list of session keys, that are to be expired
Throws:
  `IOException` - if an input-/output error occurred

### keys

public String[] keys() throws IOException

Specified by:
  `keys` in interface `Store`
Overrides:
  `keys` in class `JDBCStore`
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
Return an integer containing a count of all Sessions currently saved in this Store. If there are no Sessions, `0` is returned.

Specified by:
  `getSize` in interface `Store`
Overrides:
  `getSize` in class `JDBCStore`
Returns:
  the count of all sessions currently saved in this Store
Throws:
  `IOException` - if an input/output error occurred

### load

public Session load(String id) throws ClassNotFoundException, IOException
Load the Session associated with the id `id`. If no such session is found `null` is returned.

Specified by:
  `load` in interface `Store`
Overrides:
  `load` in class `JDBCStore`
Parameters:
  `id` - a value of type `String`
Returns:
  the stored `Session`
Throws:
  `ClassNotFoundException` - if an error occurs
  `IOException` - if an input/output error occurred

### remove

public void remove(String id) throws IOException
Remove the Session with the specified session identifier from this Store, if present. If no such Session is present, this method takes no action.

Specified by:
  `remove` in interface `Store`
Overrides:
  `remove` in class `JDBCStore`
Parameters:
  `id` - Session identifier of the Session to be removed
Throws:
  `IOException` - if an input/output error occurs

### clear

public void clear() throws IOException
Remove all of the Sessions in this Store.

Specified by:
  `clear` in interface `Store`
Overrides:
  `clear` in class `JDBCStore`
Throws:
  `IOException` - if an input/output error occurs

### save

public void save(Session session) throws IOException
Save a session to the Store.

Specified by:
  `save` in interface `Store`
Overrides:
  `save` in class `JDBCStore`
Parameters:
  `session` - the session to be stored
Throws:
  `IOException` - if an input/output error occurs

### open

protected Connection open() throws SQLException
Open (if necessary) and return a database connection for use by this Store.

Overrides:
  `open` in class `JDBCStore`
Returns:
  database connection ready to use
Throws:
  `SQLException` - if a database error occurs

### close

protected void close(Connection dbConnection)
Close the specified database connection.

Overrides:
  `close` in class `JDBCStore`
Parameters:
  `dbConnection` - The connection to be closed