org.eclipse.jetty.server.session
Class HashSessionManager

java.lang.Object
  extended by org.eclipse.jetty.util.component.AbstractLifeCycle
      extended by org.eclipse.jetty.server.session.AbstractSessionManager
          extended by org.eclipse.jetty.server.session.HashSessionManager
All Implemented Interfaces:
SessionManager, LifeCycle

public class HashSessionManager
extends AbstractSessionManager

An in-memory implementation of SessionManager.

This manager supports saving sessions to disk, either periodically or at shutdown. Sessions can also have their content idle saved to disk to reduce the memory overheads of large idle sessions.

This manager will create it's own Timer instance to scavenge threads, unless it discovers a shared Timer instance set as the "org.eclipse.jetty.server.session.timer" attribute of the ContextHandler.


Nested Class Summary
protected  class HashSessionManager.ClassLoadingObjectInputStream
           
protected  class HashSessionManager.HashedSession
           
 
Nested classes/interfaces inherited from class org.eclipse.jetty.server.session.AbstractSessionManager
AbstractSessionManager.NullSessionContext, AbstractSessionManager.Session, AbstractSessionManager.SessionIf
 
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener
 
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
 
Field Summary
protected  ConcurrentMap<String,HashSessionManager.HashedSession> _sessions
           
 
Fields inherited from class org.eclipse.jetty.server.session.AbstractSessionManager
__distantFuture, _checkingRemoteSessionIdEncoding, _context, _dftMaxIdleSecs, _httpOnly, _loader, _maxCookieAge, _nodeIdInSessionId, _refreshCookieAge, _secureCookies, _sessionAttributeListeners, _sessionCookie, _sessionDomain, _sessionHandler, _sessionIdManager, _sessionIdPathParameterName, _sessionIdPathParameterNamePrefix, _sessionListeners, _sessionPath, _sessionsStats, _sessionTimeStats
 
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
_listeners, FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING
 
Fields inherited from interface org.eclipse.jetty.server.SessionManager
__CheckRemoteSessionEncoding, __DefaultSessionCookie, __DefaultSessionDomain, __DefaultSessionIdPathParameterName, __MaxAgeProperty, __SessionCookieProperty, __SessionDomainProperty, __SessionIdPathParameterNameProperty, __SessionPathProperty
 
Constructor Summary
HashSessionManager()
           
 
Method Summary
protected  void addSession(AbstractSessionManager.Session session)
           
 void doStart()
           
 void doStop()
           
 int getIdleSavePeriod()
           
 int getSavePeriod()
           
 int getScavengePeriod()
           
 AbstractSessionManager.Session getSession(String idInCluster)
          Get a known existing session
 Map getSessionMap()
           
 int getSessions()
           
 File getStoreDirectory()
           
protected  void invalidateSessions()
           
 boolean isLazyLoad()
           
protected  AbstractSessionManager.Session newSession(HttpServletRequest request)
          Create a new session instance
protected  AbstractSessionManager.Session newSession(long created, long accessed, String clusterId)
           
protected  boolean removeSession(String clusterId)
           
 HashSessionManager.HashedSession restoreSession(InputStream is, HashSessionManager.HashedSession session)
           
protected  HashSessionManager.HashedSession restoreSession(String idInCuster)
           
 void restoreSessions()
           
 void saveSessions()
           
protected  void scavenge()
          Find sessions that have timed out and invalidate them.
 void setIdleSavePeriod(int seconds)
          Configures the period in seconds after which a session is deemed idle and saved to save on session memory.
 void setLazyLoad(boolean lazyLoad)
           
 void setMaxInactiveInterval(int seconds)
          Sets the max period of inactivity, after which the session is invalidated, in seconds.
 void setSavePeriod(int seconds)
           
 void setScavengePeriod(int seconds)
           
 void setStoreDirectory(File dir)
           
 
Methods inherited from class org.eclipse.jetty.server.session.AbstractSessionManager
access, addEventListener, addSession, clearEventListeners, complete, getClusterId, getHttpOnly, getHttpSession, getIdManager, getMaxCookieAge, getMaxInactiveInterval, getMaxSessions, getMetaManager, getMinSessions, getNodeId, getRefreshCookieAge, getSecureCookies, getSessionCookie, getSessionCookie, getSessionDomain, getSessionHandler, getSessionIdPathParameterName, getSessionIdPathParameterNamePrefix, getSessionPath, getSessionsMax, getSessionsTotal, getSessionTimeMax, getSessionTimeMean, getSessionTimeStdDev, getSessionTimeTotal, isCheckingRemoteSessionIdEncoding, isNodeIdInSessionId, isUsingCookies, isValid, newHttpSession, removeEventListener, removeSession, removeSession, resetStats, setCheckingRemoteSessionIdEncoding, setHttpOnly, setIdManager, setMaxCookieAge, setMetaManager, setNodeIdInSessionId, setRefreshCookieAge, setSecureCookies, setSessionCookie, setSessionDomain, setSessionHandler, setSessionIdPathParameterName, setSessionPath, setUsingCookies, statsReset
 
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle
addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
 

Field Detail

_sessions

protected ConcurrentMap<String,HashSessionManager.HashedSession> _sessions
Constructor Detail

HashSessionManager

public HashSessionManager()
Method Detail

doStart

public void doStart()
             throws Exception
Overrides:
doStart in class AbstractSessionManager
Throws:
Exception

doStop

public void doStop()
            throws Exception
Overrides:
doStop in class AbstractSessionManager
Throws:
Exception

getScavengePeriod

public int getScavengePeriod()
Returns:
the period in seconds at which a check is made for sessions to be invalidated.

getSessionMap

public Map getSessionMap()
Specified by:
getSessionMap in class AbstractSessionManager

getSessions

public int getSessions()
Overrides:
getSessions in class AbstractSessionManager

getIdleSavePeriod

public int getIdleSavePeriod()
Returns:
seconds Idle period after which a session is saved

setIdleSavePeriod

public void setIdleSavePeriod(int seconds)
Configures the period in seconds after which a session is deemed idle and saved to save on session memory. The session is persisted, the values attribute map is cleared and the session set to idled.

Parameters:
seconds - Idle period after which a session is saved

setMaxInactiveInterval

public void setMaxInactiveInterval(int seconds)
Description copied from interface: SessionManager
Sets the max period of inactivity, after which the session is invalidated, in seconds.

Specified by:
setMaxInactiveInterval in interface SessionManager
Overrides:
setMaxInactiveInterval in class AbstractSessionManager
Parameters:
seconds - the max inactivity period, in seconds.
See Also:
SessionManager.getMaxInactiveInterval()

setSavePeriod

public void setSavePeriod(int seconds)
Parameters:
seconds - the period is seconds at which sessions are periodically saved to disk

getSavePeriod

public int getSavePeriod()
Returns:
the period in seconds at which sessions are periodically saved to disk

setScavengePeriod

public void setScavengePeriod(int seconds)
Parameters:
seconds - the period in seconds at which a check is made for sessions to be invalidated.

scavenge

protected void scavenge()
Find sessions that have timed out and invalidate them. This runs in the SessionScavenger thread.


addSession

protected void addSession(AbstractSessionManager.Session session)
Specified by:
addSession in class AbstractSessionManager

getSession

public AbstractSessionManager.Session getSession(String idInCluster)
Description copied from class: AbstractSessionManager
Get a known existing session

Specified by:
getSession in class AbstractSessionManager
Parameters:
idInCluster - The session ID in the cluster, stripped of any worker name.
Returns:
A Session or null if none exists.

invalidateSessions

protected void invalidateSessions()
Specified by:
invalidateSessions in class AbstractSessionManager

newSession

protected AbstractSessionManager.Session newSession(HttpServletRequest request)
Description copied from class: AbstractSessionManager
Create a new session instance

Specified by:
newSession in class AbstractSessionManager
Returns:
the new session

newSession

protected AbstractSessionManager.Session newSession(long created,
                                                    long accessed,
                                                    String clusterId)

removeSession

protected boolean removeSession(String clusterId)
Specified by:
removeSession in class AbstractSessionManager

setStoreDirectory

public void setStoreDirectory(File dir)

getStoreDirectory

public File getStoreDirectory()

setLazyLoad

public void setLazyLoad(boolean lazyLoad)

isLazyLoad

public boolean isLazyLoad()

restoreSessions

public void restoreSessions()
                     throws Exception
Throws:
Exception

restoreSession

protected HashSessionManager.HashedSession restoreSession(String idInCuster)

saveSessions

public void saveSessions()
                  throws Exception
Throws:
Exception

restoreSession

public HashSessionManager.HashedSession restoreSession(InputStream is,
                                                       HashSessionManager.HashedSession session)
                                                throws Exception
Throws:
Exception


Copyright © 1995-2011 Mort Bay Consulting. All Rights Reserved.