Class 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
    • Field Detail

      • storeName

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

        protected java.lang.String dataSourceName
        name of the JNDI resource
      • dataSource

        protected javax.sql.DataSource dataSource
        DataSource to use
      • sessionTable

        protected java.lang.String sessionTable
        Table to use.
      • sessionAppCol

        protected java.lang.String sessionAppCol
        Column to use for /Engine/Host/Context name
      • sessionIdCol

        protected java.lang.String sessionIdCol
        Id column to use.
      • sessionDataCol

        protected java.lang.String sessionDataCol
        Data column to use.
      • sessionValidCol

        protected java.lang.String sessionValidCol
        Is Valid column to use.
      • sessionMaxInactiveCol

        protected java.lang.String sessionMaxInactiveCol
        Max Inactive column to use.
      • sessionLastAccessedCol

        protected java.lang.String sessionLastAccessedCol
        Last Accessed column to use.
    • Constructor Detail

      • DataSourceStore

        public DataSourceStore()
    • Method Detail

      • getName

        public java.lang.String getName()
        Returns:
        the name for this instance (built from container name)
      • getStoreName

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

        public void setSessionTable​(java.lang.String sessionTable)
        Set the table for this Store.
        Parameters:
        sessionTable - The new table
      • getSessionTable

        public java.lang.String getSessionTable()
        Returns:
        the table for this Store.
      • setSessionAppCol

        public void setSessionAppCol​(java.lang.String sessionAppCol)
        Set the App column for the table.
        Parameters:
        sessionAppCol - the column name
      • getSessionAppCol

        public java.lang.String getSessionAppCol()
        Returns:
        the web application name column for the table.
      • setSessionIdCol

        public void setSessionIdCol​(java.lang.String sessionIdCol)
        Set the Id column for the table.
        Parameters:
        sessionIdCol - the column name
      • getSessionIdCol

        public java.lang.String getSessionIdCol()
        Returns:
        the Id column for the table.
      • setSessionDataCol

        public void setSessionDataCol​(java.lang.String sessionDataCol)
        Set the Data column for the table
        Parameters:
        sessionDataCol - the column name
      • getSessionDataCol

        public java.lang.String getSessionDataCol()
        Returns:
        the data column for the table
      • setSessionValidCol

        public void setSessionValidCol​(java.lang.String sessionValidCol)
        Set the Is Valid column for the table
        Parameters:
        sessionValidCol - The column name
      • getSessionValidCol

        public java.lang.String getSessionValidCol()
        Returns:
        the Is Valid column
      • setSessionMaxInactiveCol

        public void setSessionMaxInactiveCol​(java.lang.String sessionMaxInactiveCol)
        Set the Max Inactive column for the table
        Parameters:
        sessionMaxInactiveCol - The column name
      • getSessionMaxInactiveCol

        public java.lang.String getSessionMaxInactiveCol()
        Returns:
        the Max Inactive column
      • setSessionLastAccessedCol

        public void setSessionLastAccessedCol​(java.lang.String sessionLastAccessedCol)
        Set the Last Accessed column for the table
        Parameters:
        sessionLastAccessedCol - The column name
      • getSessionLastAccessedCol

        public java.lang.String getSessionLastAccessedCol()
        Returns:
        the Last Accessed column
      • setDataSourceName

        public void setDataSourceName​(java.lang.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 java.lang.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 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 StoreBase
        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
        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.
        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.
        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.
        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.
        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.
        Parameters:
        session - the session to be stored
        Throws:
        java.io.IOException - if an input/output error occurs
      • getConnection

        protected java.sql.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 java.sql.Connection open()
                                    throws java.sql.SQLException
        Open (if necessary) and return a database connection for use by this Store.
        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.
        Parameters:
        dbConnection - The connection to be closed
      • release

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