Class CacheJdbcStoreSessionListener

  • All Implemented Interfaces:
    CacheStoreSessionListener, LifecycleAware

    public class CacheJdbcStoreSessionListener
    extends Object
    implements CacheStoreSessionListener, LifecycleAware
    Cache store session listener based on JDBC connection.

    For each session this listener gets a new JDBC connection from provided DataSource and commits (or rolls back) it when session ends.

    The connection is saved as a store session attachment. The listener guarantees that the connection will be available for any store operation. If there is an ongoing cache transaction, all operations within this transaction will be committed or rolled back only when the session ends.

    As an example, here is how the CacheWriter.write(Cache.Entry) method can be implemented if CacheJdbcStoreSessionListener is configured:

     private static class Store extends CacheStoreAdapter<Integer, Integer> {
         @CacheStoreSessionResource
         private CacheStoreSession ses;
    
         @Override public void write(Cache.Entry<? extends Integer, ? extends Integer> entry) throws CacheWriterException {
             // Get connection from the current session.
             Connection conn = ses.attachment();
    
             // Execute update SQL query.
             try {
                 conn.createStatement().executeUpdate("...");
             }
             catch (SQLException e) {
                 throw new CacheWriterException("Failed to update the store.", e);
             }
         }
     }
     
    JDBC connection will be automatically created by the listener at the start of the session and closed when it ends.
    • Constructor Detail

      • CacheJdbcStoreSessionListener

        public CacheJdbcStoreSessionListener()
    • Method Detail

      • setDataSource

        public void setDataSource​(DataSource dataSrc)
        Sets data source.

        This is a required parameter. If data source is not set, exception will be thrown on startup.

        Parameters:
        dataSrc - Data source.
      • getDataSource

        public DataSource getDataSource()
        Gets data source.
        Returns:
        Data source.
      • onSessionEnd

        public void onSessionEnd​(CacheStoreSession ses,
                                 boolean commit)
        On session end callback.

        Called after all operations within a session are invoked.

        Specified by:
        onSessionEnd in interface CacheStoreSessionListener
        Parameters:
        ses - Current session.
        commit - True if persistence store transaction should commit, false for rollback.