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

### Method Summary

All Methods Instance Methods Concrete Methods
`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 Detail

#### DataSourceStore

    public DataSourceStore()

### Method Detail

#### 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