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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `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