## org.mortbay.jetty.servlet
Class AbstractSessionManager

    java.lang.Object
      org.mortbay.component.AbstractLifeCycle
          org.mortbay.jetty.servlet.AbstractSessionManager

All Implemented Interfaces:
  LifeCycle, SessionManager

Direct Known Subclasses:
  HashSessionManager

    public abstract class AbstractSessionManager

extends AbstractLifeCycle
implements SessionManager

An Abstract implementation of SessionManager. The partial implementation of SessionManager interface provides the majority of the handling required to implement a SessionManager. Concrete implementations of SessionManager based on AbstractSessionManager need only implement the newSession method to return a specialized version of the Session inner class that provides an attribute Map.

If the property org.mortbay.jetty.servlet.AbstractSessionManager.23Notifications is set to true, the 2.3 servlet spec notification style will be used.

Author:
  Greg Wilkins (gregw)

Nested Class Summary
`static class` `AbstractSessionManager.NullSessionContext` Null returning implementation of HttpSessionContext
`class` `AbstractSessionManager.Session` Implements `HttpSession` from the `javax.servlet` package.
`static interface` `AbstractSessionManager.SessionIf` Interface that any session wrapper should implement so that SessionManager may access the Jetty session implementation.

Field Summary
`static int` `__distantFuture`
`protected ContextHandler.SContext` `_context`
`protected int` `_dftMaxIdleSecs`
`protected boolean` `_httpOnly`
`protected ClassLoader` `_loader`
`protected int` `_maxCookieAge`
`protected int` `_maxSessions`
`protected int` `_minSessions`
`protected boolean` `_nodeIdInSessionId`
`protected int` `_refreshCookieAge`
`protected boolean` `_secureCookies`
`protected Object` `_sessionAttributeListeners`
`protected String` `_sessionCookie`
`protected String` `_sessionDomain`
`protected SessionHandler` `_sessionHandler`
`protected SessionIdManager` `_sessionIdManager`
`protected Object` `_sessionListeners`
`protected String` `_sessionPath`
`protected String` `_sessionURL`
`protected String` `_sessionURLPrefix`

Fields inherited from interface org.mortbay.jetty.SessionManager
`__DefaultSessionCookie, __DefaultSessionDomain, __DefaultSessionURL, __MaxAgeProperty, __SessionCookieProperty, __SessionDomainProperty, __SessionPathProperty, __SessionURLProperty`

Constructor Summary
`AbstractSessionManager()`

Method Summary
`Cookie` `access(HttpSession session, boolean secure)` Called by the `SessionHandler` when a session is access by a request
`void` `addEventListener(EventListener listener)` Add an event listener.
`protected abstract void` `addSession(AbstractSessionManager.Session session)`
`protected void` `addSession(AbstractSessionManager.Session session, boolean created)` Add the session Registers the session with this manager and registers the session ID with the sessionIDManager;
`void` `clearEventListeners()`
`void` `complete(HttpSession session)` Called by the `SessionHandler` when a reqeuest is not longer handling a session.
`void` `doStart()`
`void` `doStop()`
`String` `getClusterId(HttpSession session)` Get the session cluster id
`boolean` `getHttpOnly()`
`HttpSession` `getHttpSession(String nodeId)`
`SessionIdManager` `getIdManager()`
`int` `getMaxCookieAge()`
`int` `getMaxInactiveInterval()`
`int` `getMaxSessions()`
`SessionIdManager` `getMetaManager()` Deprecated. use `getIdManager()`
`int` `getMinSessions()`
`String` `getNodeId(HttpSession session)` Get the session node id
`int` `getRefreshCookieAge()`
`boolean` `getSecureCookies()`
`abstract AbstractSessionManager.Session` `getSession(String idInCluster)` Get a known existingsession
`String` `getSessionCookie()`
`Cookie` `getSessionCookie(HttpSession session, String contextPath, boolean requestIsSecure)` Get a Cookie for a session.
`String` `getSessionDomain()`
`SessionHandler` `getSessionHandler()`
`abstract Map` `getSessionMap()`
`String` `getSessionPath()`
`abstract int` `getSessions()`
`String` `getSessionURL()`
`String` `getSessionURLPrefix()`
`protected abstract void` `invalidateSessions()`
`boolean` `isNodeIdInSessionId()`
`boolean` `isUsingCookies()`
`boolean` `isValid(HttpSession session)`
`HttpSession` `newHttpSession(HttpServletRequest request)` Create a new HttpSession for a request
`protected abstract AbstractSessionManager.Session` `newSession(HttpServletRequest request)` Create a new session instance
`void` `removeEventListener(EventListener listener)`
`void` `removeSession(AbstractSessionManager.Session session, boolean invalidate)` Remove session from manager
`void` `removeSession(HttpSession session, boolean invalidate)` Remove session from manager
`protected abstract void` `removeSession(String idInCluster)`
`void` `resetStats()`
`void` `setHttpOnly(boolean httpOnly)`
`void` `setIdManager(SessionIdManager metaManager)`
`void` `setMaxCookieAge(int maxCookieAgeInSeconds)`
`void` `setMaxInactiveInterval(int seconds)`
`void` `setMetaManager(SessionIdManager metaManager)` Deprecated. use `setIdManager(SessionIdManager)`
`void` `setNodeIdInSessionId(boolean nodeIdInSessionId)`
`void` `setRefreshCookieAge(int ageInSeconds)`
`void` `setSecureCookies(boolean secureCookies)`
`void` `setSessionCookie(String cookieName)`
`void` `setSessionDomain(String domain)`
`void` `setSessionHandler(SessionHandler sessionHandler)`
`void` `setSessionPath(String path)`
`void` `setSessionURL(String url)`
`void` `setUsingCookies(boolean usingCookies)`

Methods inherited from class org.mortbay.component.AbstractLifeCycle
`isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, 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.mortbay.component.LifeCycle
`isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, start, stop`

Field Detail

### __distantFuture

    public static final int __distantFuture

See Also:
  Constant Field Values

### _dftMaxIdleSecs

    protected int _dftMaxIdleSecs

### _sessionHandler

    protected SessionHandler _sessionHandler

### _httpOnly

    protected boolean _httpOnly

### _maxSessions

    protected int _maxSessions

### _minSessions

    protected int _minSessions

### _sessionIdManager

    protected SessionIdManager _sessionIdManager

### _secureCookies

    protected boolean _secureCookies

### _sessionAttributeListeners

    protected Object _sessionAttributeListeners

### _sessionListeners

    protected Object _sessionListeners

### _loader

    protected ClassLoader _loader

### _context

    protected ContextHandler.SContext _context

### _sessionCookie

    protected String _sessionCookie

### _sessionURL

    protected String _sessionURL

### _sessionURLPrefix

    protected String _sessionURLPrefix

### _sessionDomain

    protected String _sessionDomain

### _sessionPath

    protected String _sessionPath

### _maxCookieAge

    protected int _maxCookieAge

### _refreshCookieAge

    protected int _refreshCookieAge

### _nodeIdInSessionId

    protected boolean _nodeIdInSessionId

Constructor Detail

### AbstractSessionManager

    public AbstractSessionManager()

Method Detail

### access

    public Cookie access(HttpSession session,
                         boolean secure)

  Description copied from interface: `SessionManager`
  Called by the `SessionHandler` when a session is access by a request

  Specified by:
    `access` in interface `SessionManager`
  Returns:
    Cookie If non null, this cookie should be set on the response to either migrate the session or to refresh a cookie that may expire.

### addEventListener

    public void addEventListener(EventListener listener)

  Description copied from interface: `SessionManager`
  Add an event listener.

  Specified by:
    `addEventListener` in interface `SessionManager`
  Parameters:
    `listener` - An Event Listener. Individual SessionManagers implemetations may accept arbitrary listener types, but they are expected to at least handle HttpSessionActivationListener, HttpSessionAttributeListener, HttpSessionBindingListener, HttpSessionListener

### clearEventListeners

    public void clearEventListeners()

  Specified by:
    `clearEventListeners` in interface `SessionManager`

### complete

    public void complete(HttpSession session)

  Description copied from interface: `SessionManager`
  Called by the `SessionHandler` when a reqeuest is not longer handling a session. Not this includes new sessions, so there may not be a matching call to `#access(HttpSession)`.

  Specified by:
    `complete` in interface `SessionManager`

### doStart

    public void doStart()
                 throws Exception

  Overrides:
    `doStart` in class `AbstractLifeCycle`
  Throws:
    `Exception`

### doStop

    public void doStop()
                throws Exception

  Overrides:
    `doStop` in class `AbstractLifeCycle`
  Throws:
    `Exception`

### getHttpOnly

    public boolean getHttpOnly()

  Specified by:
    `getHttpOnly` in interface `SessionManager`
  Returns:
    Returns the httpOnly.

### getHttpSession

    public HttpSession getHttpSession(String nodeId)

  Specified by:
    `getHttpSession` in interface `SessionManager`

### getIdManager

    public SessionIdManager getIdManager()

  Specified by:
    `getIdManager` in interface `SessionManager`
  Returns:
    Returns the metaManager used for cross context session management

### getMaxCookieAge

    public int getMaxCookieAge()

  Specified by:
    `getMaxCookieAge` in interface `SessionManager`

### getMaxInactiveInterval

    public int getMaxInactiveInterval()

  Specified by:
    `getMaxInactiveInterval` in interface `SessionManager`
  Returns:
    seconds

### getMaxSessions

    public int getMaxSessions()

### getMetaManager

    public SessionIdManager getMetaManager()

  Deprecated. use `getIdManager()`

  Specified by:
    `getMetaManager` in interface `SessionManager`
  Returns:
    the cross context session id manager.

### getMinSessions

    public int getMinSessions()

### getRefreshCookieAge

    public int getRefreshCookieAge()

### getSecureCookies

    public boolean getSecureCookies()

  Specified by:
    `getSecureCookies` in interface `SessionManager`
  Returns:
    Returns the secureCookies.

### getSessionCookie

    public String getSessionCookie()

  Specified by:
    `getSessionCookie` in interface `SessionManager`

### getSessionCookie

    public Cookie getSessionCookie(HttpSession session,
                                   String contextPath,
                                   boolean requestIsSecure)

  Description copied from interface: `SessionManager`
  Get a Cookie for a session.

  Specified by:
    `getSessionCookie` in interface `SessionManager`
  Parameters:
    `session` - The session to which the cookie should refer.
    `contextPath` - The context to which the cookie should be linked. The client will only send the cookie value when requesting resources under this path.
    `requestIsSecure` - Whether the client is accessing the server over a secure protocol (i.e. HTTPS).
  Returns:
    If this `SessionManager` uses cookies, then this method will return a new `cookie object` that should be set on the client in order to link future HTTP requests with the `session`. If cookies are not in use, this method returns `null`.

### getSessionDomain

    public String getSessionDomain()

  Specified by:
    `getSessionDomain` in interface `SessionManager`

### getSessionHandler

    public SessionHandler getSessionHandler()

  Returns:
    Returns the sessionHandler.

### getSessionMap

    public abstract Map getSessionMap()

### getSessionPath

    public String getSessionPath()

  Specified by:
    `getSessionPath` in interface `SessionManager`

### getSessions

    public abstract int getSessions()

### getSessionURL

    public String getSessionURL()

  Specified by:
    `getSessionURL` in interface `SessionManager`

### getSessionURLPrefix

    public String getSessionURLPrefix()

  Specified by:
    `getSessionURLPrefix` in interface `SessionManager`

### isUsingCookies

    public boolean isUsingCookies()

  Specified by:
    `isUsingCookies` in interface `SessionManager`
  Returns:
    Returns the usingCookies.

### isValid

    public boolean isValid(HttpSession session)

  Specified by:
    `isValid` in interface `SessionManager`

### getClusterId

    public String getClusterId(HttpSession session)

  Description copied from interface: `SessionManager`
  Get the session cluster id

  Specified by:
    `getClusterId` in interface `SessionManager`
  Returns:
    The unique id of the session within the cluster (without a node id extension)

### getNodeId

    public String getNodeId(HttpSession session)

  Description copied from interface: `SessionManager`
  Get the session node id

  Specified by:
    `getNodeId` in interface `SessionManager`
  Returns:
    The unique id of the session within the cluster, extended with an optional node id.

### newHttpSession

    public HttpSession newHttpSession(HttpServletRequest request)

  Create a new HttpSession for a request

  Specified by:
    `newHttpSession` in interface `SessionManager`

### removeEventListener

    public void removeEventListener(EventListener listener)

  Specified by:
    `removeEventListener` in interface `SessionManager`

### resetStats

    public void resetStats()

### setHttpOnly

    public void setHttpOnly(boolean httpOnly)

  Parameters:
    `httpOnly` - The httpOnly to set.

### setIdManager

    public void setIdManager(SessionIdManager metaManager)

  Specified by:
    `setIdManager` in interface `SessionManager`
  Parameters:
    `metaManager` - The metaManager used for cross context session management.

### setMaxCookieAge

    public void setMaxCookieAge(int maxCookieAgeInSeconds)

  Specified by:
    `setMaxCookieAge` in interface `SessionManager`

### setMaxInactiveInterval

    public void setMaxInactiveInterval(int seconds)

  Specified by:
    `setMaxInactiveInterval` in interface `SessionManager`
  Parameters:
    `seconds` -

### setMetaManager

    public void setMetaManager(SessionIdManager metaManager)

  Deprecated. use `setIdManager(SessionIdManager)`

### setRefreshCookieAge

    public void setRefreshCookieAge(int ageInSeconds)

### setSecureCookies

    public void setSecureCookies(boolean secureCookies)

  Parameters:
    `secureCookies` - The secureCookies to set.

### setSessionCookie

    public void setSessionCookie(String cookieName)

  Specified by:
    `setSessionCookie` in interface `SessionManager`

### setSessionDomain

    public void setSessionDomain(String domain)

  Specified by:
    `setSessionDomain` in interface `SessionManager`

### setSessionHandler

    public void setSessionHandler(SessionHandler sessionHandler)

  Specified by:
    `setSessionHandler` in interface `SessionManager`
  Parameters:
    `sessionHandler` - The sessionHandler to set.

### setSessionPath

    public void setSessionPath(String path)

  Specified by:
    `setSessionPath` in interface `SessionManager`

### setSessionURL

    public void setSessionURL(String url)

  Specified by:
    `setSessionURL` in interface `SessionManager`

### setUsingCookies

    public void setUsingCookies(boolean usingCookies)

  Parameters:
    `usingCookies` - The usingCookies to set.

### addSession

    protected abstract void addSession(AbstractSessionManager.Session session)

### addSession

    protected void addSession(AbstractSessionManager.Session session,
                              boolean created)

  Add the session Registers the session with this manager and registers the session ID with the sessionIDManager;

### getSession

    public abstract AbstractSessionManager.Session getSession(String idInCluster)

  Get a known existingsession

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

### invalidateSessions

    protected abstract void invalidateSessions()

### newSession

    protected abstract AbstractSessionManager.Session newSession(HttpServletRequest request)

  Create a new session instance

  Parameters:
    `request` -
  Returns:

### isNodeIdInSessionId

    public boolean isNodeIdInSessionId()

  Returns:
    true if the cluster node id (worker id) is returned as part of the session id by `HttpSession.getId()`. Default is false.

### setNodeIdInSessionId

    public void setNodeIdInSessionId(boolean nodeIdInSessionId)

  Parameters:
    `nodeIdInSessionId` - true if the cluster node id (worker id) will be returned as part of the session id by `HttpSession.getId()`. Default is false.

### removeSession

    public void removeSession(HttpSession session,
                              boolean invalidate)

  Remove session from manager

  Parameters:
    `session` - The session to remove
    `invalidate` - True if `HttpSessionListener.sessionDestroyed(HttpSessionEvent)` and `SessionIdManager.invalidateAll(String)` should be called.

### removeSession

    public void removeSession(AbstractSessionManager.Session session,
                              boolean invalidate)

  Remove session from manager

  Parameters:
    `session` - The session to remove
    `invalidate` - True if `HttpSessionListener.sessionDestroyed(HttpSessionEvent)` and `SessionIdManager.invalidateAll(String)` should be called.

### removeSession

    protected abstract void removeSession(String idInCluster)

Copyright © 2007 Mort Bay Consulting. All Rights Reserved.