/** * */ package org.jboss.web.tomcat.service.session.persistent; import java.util.Set; import org.jboss.web.tomcat.service.session.distributedcache.spi.IncomingDistributableSessionData; import org.jboss.web.tomcat.service.session.distributedcache.spi.OutgoingSessionGranularitySessionData; /** * Interface exposed by a cluster-wide store for distributable web sessions. * * @author Brian Stansberry * * @version $Revision: $ */ public interface PersistentStore { /** Gets ids of session associated with the application that are in the store. */ Set<String> getSessionIds(); /** * Gets the stored information about a particular session. * * @param realId the portion of the session id that is consistent across the * lifetime of the session, i.e. with mutable elements like an * appended jvmRoute removed. * * @param includeAttributes <code>true</code> if the returned data needs to * include the session attribute map; <code>false</code> * if that is unnecessary * * @return data about the session, or <code>null</code> if no data exists * in the store */ IncomingDistributableSessionData getSessionData(String realId, boolean includeAttributes); /** * Gets the last accessed timestamp for the session with the given id * @param realId the portion of the session id that is consistent across the * lifetime of the session, i.e. with mutable elements like an * appended jvmRoute removed. * * @return the timestamp, or <code>null</code> if the session is not stored */ Long getSessionTimestamp(String realId); /** * Gets the session version for the session with the given id * * @param realId the portion of the session id that is consistent across the * lifetime of the session, i.e. with mutable elements like an * appended jvmRoute removed. * * @return the version, or <code>null</code> if the session is not stored */ Integer getSessionVersion(String realId); /** * Stores this session in the persistent store. * * @param sessionData the data to store */ void storeSessionData(OutgoingSessionGranularitySessionData sessionData); /** * Removes any information about this session from the persistent store. * * @param realId the portion of the session id that is consistent across the * lifetime of the session, i.e. with mutable elements like an * appended jvmRoute removed. */ void remove(String realId); /** * Perform processing to remove outdated sessions from the store. */ void processExpires(); /** * Brings the store to the state where it is able to handle invocations of * the other methods in this interface. */ void start(); /** * Removes the store from the state where it is able to handle invocations of * the other methods in this interface, performs any needed cleanup work. */ void stop(); }