org.mortbay.jetty.SessionManager Maven / Gradle / Ivy
// ========================================================================
// Copyright 1996-2005 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================
package org.mortbay.jetty;
import java.util.EventListener;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.mortbay.component.LifeCycle;
import org.mortbay.jetty.servlet.SessionHandler;
/* --------------------------------------------------------------------- */
/** Session Manager.
* The API required to manage sessions for a servlet context.
*
* @author Greg Wilkins
*/
public interface SessionManager extends LifeCycle
{
/* ------------------------------------------------------------ */
/** Session cookie name.
* Defaults to JSESSIONID, but can be set with the
* org.mortbay.jetty.servlet.SessionCookie context init parameter.
*/
public final static String __SessionCookieProperty = "org.mortbay.jetty.servlet.SessionCookie";
public final static String __DefaultSessionCookie = "JSESSIONID";
/* ------------------------------------------------------------ */
/** Session URL parameter name.
* Defaults to jsessionid, but can be set with the
* org.mortbay.jetty.servlet.SessionURL context init parameter. If set to null or
* "none" no URL rewriting will be done.
*/
public final static String __SessionURLProperty = "org.mortbay.jetty.servlet.SessionURL";
public final static String __DefaultSessionURL = "jsessionid";
/* ------------------------------------------------------------ */
/** Session Domain.
* If this property is set as a ServletContext InitParam, then it is
* used as the domain for session cookies. If it is not set, then
* no domain is specified for the session cookie.
*/
public final static String __SessionDomainProperty="org.mortbay.jetty.servlet.SessionDomain";
public final static String __DefaultSessionDomain = null;
/* ------------------------------------------------------------ */
/** Session Path.
* If this property is set as a ServletContext InitParam, then it is
* used as the path for the session cookie. If it is not set, then
* the context path is used as the path for the cookie.
*/
public final static String __SessionPathProperty="org.mortbay.jetty.servlet.SessionPath";
/* ------------------------------------------------------------ */
/** Session Max Age.
* If this property is set as a ServletContext InitParam, then it is
* used as the max age for the session cookie. If it is not set, then
* a max age of -1 is used.
*/
public final static String __MaxAgeProperty="org.mortbay.jetty.servlet.MaxAge";
/* ------------------------------------------------------------ */
public HttpSession getHttpSession(String id);
/* ------------------------------------------------------------ */
public HttpSession newHttpSession(HttpServletRequest request);
/* ------------------------------------------------------------ */
/** @return true if session cookies should be secure
*/
public boolean getSecureCookies();
/* ------------------------------------------------------------ */
/** @return true if session cookies should be httponly (microsoft extension)
*/
public boolean getHttpOnly();
/* ------------------------------------------------------------ */
public int getMaxInactiveInterval();
/* ------------------------------------------------------------ */
public void setMaxInactiveInterval(int seconds);
/* ------------------------------------------------------------ */
public void setSessionHandler(SessionHandler handler);
/* ------------------------------------------------------------ */
/** Add an event listener.
* @param listener An Event Listener. Individual SessionManagers
* implemetations may accept arbitrary listener types, but they
* are expected to at least handle
* HttpSessionActivationListener,
* HttpSessionAttributeListener,
* HttpSessionBindingListener,
* HttpSessionListener
*/
public void addEventListener(EventListener listener);
/* ------------------------------------------------------------ */
public void removeEventListener(EventListener listener);
/* ------------------------------------------------------------ */
public void clearEventListeners();
/* ------------------------------------------------------------ */
/** Get a Cookie for a session.
* @param session The session to which the cookie should refer.
* @param contextPath The context to which the cookie should be linked. The client will only send the cookie value
* when requesting resources under this path.
* @param requestIsSecure Whether the client is accessing the server over a secure protocol (i.e. HTTPS).
* @return If this SessionManager
uses cookies, then this method will return a new
* {@link Cookie 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
.
*/
public Cookie getSessionCookie(HttpSession session,String contextPath, boolean requestIsSecure);
/* ------------------------------------------------------------ */
/**
* @return the cross context session meta manager.
*/
public SessionIdManager getIdManager();
/* ------------------------------------------------------------ */
/**
* @return the cross context session id manager.
* @deprecated use {@link #getIdManager()}
*/
public SessionIdManager getMetaManager();
/* ------------------------------------------------------------ */
/**
* @param meta the cross context session meta manager.
*/
public void setIdManager(SessionIdManager meta);
/* ------------------------------------------------------------ */
public boolean isValid(HttpSession session);
/* ------------------------------------------------------------ */
/** Get the session node id
* @param session
* @return The unique id of the session within the cluster, extended with an optional node id.
*/
public String getNodeId(HttpSession session);
/* ------------------------------------------------------------ */
/** Get the session cluster id
* @param session
* @return The unique id of the session within the cluster (without a node id extension)
*/
public String getClusterId(HttpSession session);
/* ------------------------------------------------------------ */
/** Called by the {@link SessionHandler} when a session is access by a request
* @return 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.
*/
public Cookie access(HttpSession session,boolean secure);
/* ------------------------------------------------------------ */
/** Called by the {@link SessionHandler} when a reqeuest is not longer
* handling a session. Not this includes new sessions, so there may not
* be a matching call to {@link #access(HttpSession)}.
*
*/
public void complete(HttpSession session);
public void setSessionCookie (String cookieName);
public String getSessionCookie ();
public void setSessionURL (String url);
public String getSessionURL ();
public String getSessionURLPrefix();
public void setSessionDomain (String domain);
public String getSessionDomain ();
public void setSessionPath (String path);
public String getSessionPath ();
public void setMaxCookieAge (int maxCookieAgeInSeconds);
public int getMaxCookieAge();
public boolean isUsingCookies();
}