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

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `clear()` Remove all of the Sessions in this Store.
`protected void` `close​(java.sql.Connection dbConnection)` Close the specified database connection.
`java.lang.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.
`java.lang.String[]` `keys()`
`Session` `load​(java.lang.String id)` Load the Session associated with the id `id`.
`protected java.sql.Connection` `open()` Open (if necessary) and return a database connection for use by this Store.
`void` `remove​(java.lang.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 java.lang.String[] expiredKeys()
                                   throws java.io.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:
  `java.io.IOException` - if an input-/output error occurred

#### keys

    public java.lang.String[] keys()
                            throws java.io.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:
  `java.io.IOException` - if an input/output error occurred

#### getSize

    public int getSize()
                throws java.io.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:
  `java.io.IOException` - if an input/output error occurred

#### load

    public Session load​(java.lang.String id)
                 throws java.lang.ClassNotFoundException,
                        java.io.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:
  `java.lang.ClassNotFoundException` - if an error occurs
  `java.io.IOException` - if an input/output error occurred

#### remove

    public void remove​(java.lang.String id)
                throws java.io.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:
  `java.io.IOException` - if an input/output error occurs

#### clear

    public void clear()
               throws java.io.IOException

Remove all of the Sessions in this Store.

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

#### save

    public void save​(Session session)
              throws java.io.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:
  `java.io.IOException` - if an input/output error occurs

#### open

    protected java.sql.Connection open()
                                throws java.sql.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:
  `java.sql.SQLException` - if a database error occurs

#### close

    protected void close​(java.sql.Connection dbConnection)

Close the specified database connection.

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