comparison src/org/eclipse/jetty/server/SessionManager.java @ 802:3428c60d7cfc

replace jetty jars with source
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 07 Sep 2016 21:15:48 -0600
parents
children
comparison
equal deleted inserted replaced
801:6a21393191c1 802:3428c60d7cfc
1 //
2 // ========================================================================
3 // Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
4 // ------------------------------------------------------------------------
5 // All rights reserved. This program and the accompanying materials
6 // are made available under the terms of the Eclipse Public License v1.0
7 // and Apache License v2.0 which accompanies this distribution.
8 //
9 // The Eclipse Public License is available at
10 // http://www.eclipse.org/legal/epl-v10.html
11 //
12 // The Apache License v2.0 is available at
13 // http://www.opensource.org/licenses/apache2.0.php
14 //
15 // You may elect to redistribute this code under either of these licenses.
16 // ========================================================================
17 //
18
19 package org.eclipse.jetty.server;
20
21 import java.util.EventListener;
22 import java.util.Set;
23
24 import javax.servlet.SessionCookieConfig;
25 import javax.servlet.SessionTrackingMode;
26 import javax.servlet.http.Cookie;
27 import javax.servlet.http.HttpServletRequest;
28 import javax.servlet.http.HttpSession;
29
30 import org.eclipse.jetty.http.HttpCookie;
31 import org.eclipse.jetty.server.session.SessionHandler;
32 import org.eclipse.jetty.util.component.LifeCycle;
33
34 /* --------------------------------------------------------------------- */
35 /**
36 * Session Manager.
37 * The API required to manage sessions for a servlet context.
38 *
39 */
40
41 /* ------------------------------------------------------------ */
42 /**
43 */
44 public interface SessionManager extends LifeCycle
45 {
46 /* ------------------------------------------------------------ */
47 /**
48 * Session cookie name.
49 * Defaults to <code>JSESSIONID</code>, but can be set with the
50 * <code>org.eclipse.jetty.servlet.SessionCookie</code> context init parameter.
51 */
52 public final static String __SessionCookieProperty = "org.eclipse.jetty.servlet.SessionCookie";
53 public final static String __DefaultSessionCookie = "JSESSIONID";
54
55
56 /* ------------------------------------------------------------ */
57 /**
58 * Session id path parameter name.
59 * Defaults to <code>jsessionid</code>, but can be set with the
60 * <code>org.eclipse.jetty.servlet.SessionIdPathParameterName</code> context init parameter.
61 * If set to null or "none" no URL rewriting will be done.
62 */
63 public final static String __SessionIdPathParameterNameProperty = "org.eclipse.jetty.servlet.SessionIdPathParameterName";
64 public final static String __DefaultSessionIdPathParameterName = "jsessionid";
65 public final static String __CheckRemoteSessionEncoding = "org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding";
66
67
68 /* ------------------------------------------------------------ */
69 /**
70 * Session Domain.
71 * If this property is set as a ServletContext InitParam, then it is
72 * used as the domain for session cookies. If it is not set, then
73 * no domain is specified for the session cookie.
74 */
75 public final static String __SessionDomainProperty = "org.eclipse.jetty.servlet.SessionDomain";
76 public final static String __DefaultSessionDomain = null;
77
78
79 /* ------------------------------------------------------------ */
80 /**
81 * Session Path.
82 * If this property is set as a ServletContext InitParam, then it is
83 * used as the path for the session cookie. If it is not set, then
84 * the context path is used as the path for the cookie.
85 */
86 public final static String __SessionPathProperty = "org.eclipse.jetty.servlet.SessionPath";
87
88 /* ------------------------------------------------------------ */
89 /**
90 * Session Max Age.
91 * If this property is set as a ServletContext InitParam, then it is
92 * used as the max age for the session cookie. If it is not set, then
93 * a max age of -1 is used.
94 */
95 public final static String __MaxAgeProperty = "org.eclipse.jetty.servlet.MaxAge";
96
97 /* ------------------------------------------------------------ */
98 /**
99 * Returns the <code>HttpSession</code> with the given session id
100 *
101 * @param id the session id
102 * @return the <code>HttpSession</code> with the corresponding id or null if no session with the given id exists
103 */
104 public HttpSession getHttpSession(String id);
105
106 /* ------------------------------------------------------------ */
107 /**
108 * Creates a new <code>HttpSession</code>.
109 *
110 * @param request the HttpServletRequest containing the requested session id
111 * @return the new <code>HttpSession</code>
112 */
113 public HttpSession newHttpSession(HttpServletRequest request);
114
115
116 /* ------------------------------------------------------------ */
117 /**
118 * @return true if session cookies should be HTTP-only (Microsoft extension)
119 * @see org.eclipse.jetty.http.HttpCookie#isHttpOnly()
120 */
121 public boolean getHttpOnly();
122
123 /* ------------------------------------------------------------ */
124 /**
125 * @return the max period of inactivity, after which the session is invalidated, in seconds.
126 * @see #setMaxInactiveInterval(int)
127 */
128 public int getMaxInactiveInterval();
129
130 /* ------------------------------------------------------------ */
131 /**
132 * Sets the max period of inactivity, after which the session is invalidated, in seconds.
133 *
134 * @param seconds the max inactivity period, in seconds.
135 * @see #getMaxInactiveInterval()
136 */
137 public void setMaxInactiveInterval(int seconds);
138
139 /* ------------------------------------------------------------ */
140 /**
141 * Sets the {@link SessionHandler}.
142 *
143 * @param handler the <code>SessionHandler</code> object
144 */
145 public void setSessionHandler(SessionHandler handler);
146
147 /* ------------------------------------------------------------ */
148 /**
149 * Adds an event listener for session-related events.
150 *
151 * @param listener the session event listener to add
152 * Individual SessionManagers implementations may accept arbitrary listener types,
153 * but they are expected to at least handle HttpSessionActivationListener,
154 * HttpSessionAttributeListener, HttpSessionBindingListener and HttpSessionListener.
155 * @see #removeEventListener(EventListener)
156 */
157 public void addEventListener(EventListener listener);
158
159 /* ------------------------------------------------------------ */
160 /**
161 * Removes an event listener for for session-related events.
162 *
163 * @param listener the session event listener to remove
164 * @see #addEventListener(EventListener)
165 */
166 public void removeEventListener(EventListener listener);
167
168 /* ------------------------------------------------------------ */
169 /**
170 * Removes all event listeners for session-related events.
171 *
172 * @see #removeEventListener(EventListener)
173 */
174 public void clearEventListeners();
175
176 /* ------------------------------------------------------------ */
177 /**
178 * Gets a Cookie for a session.
179 *
180 * @param session the session to which the cookie should refer.
181 * @param contextPath the context to which the cookie should be linked.
182 * The client will only send the cookie value when requesting resources under this path.
183 * @param requestIsSecure whether the client is accessing the server over a secure protocol (i.e. HTTPS).
184 * @return if this <code>SessionManager</code> uses cookies, then this method will return a new
185 * {@link Cookie cookie object} that should be set on the client in order to link future HTTP requests
186 * with the <code>session</code>. If cookies are not in use, this method returns <code>null</code>.
187 */
188 public HttpCookie getSessionCookie(HttpSession session, String contextPath, boolean requestIsSecure);
189
190 /* ------------------------------------------------------------ */
191 /**
192 * @return the cross context session id manager.
193 * @see #setSessionIdManager(SessionIdManager)
194 */
195 public SessionIdManager getSessionIdManager();
196
197 /* ------------------------------------------------------------ */
198 /**
199 * @return the cross context session id manager.
200 * @deprecated use {@link #getSessionIdManager()}
201 */
202 @Deprecated
203 public SessionIdManager getMetaManager();
204
205 /* ------------------------------------------------------------ */
206 /**
207 * Sets the cross context session id manager
208 *
209 * @param idManager the cross context session id manager.
210 * @see #getSessionIdManager()
211 */
212 public void setSessionIdManager(SessionIdManager idManager);
213
214 /* ------------------------------------------------------------ */
215 /**
216 * @param session the session to test for validity
217 * @return whether the given session is valid, that is, it has not been invalidated.
218 */
219 public boolean isValid(HttpSession session);
220
221 /* ------------------------------------------------------------ */
222 /**
223 * @param session the session object
224 * @return the unique id of the session within the cluster, extended with an optional node id.
225 * @see #getClusterId(HttpSession)
226 */
227 public String getNodeId(HttpSession session);
228
229 /* ------------------------------------------------------------ */
230 /**
231 * @param session the session object
232 * @return the unique id of the session within the cluster (without a node id extension)
233 * @see #getNodeId(HttpSession)
234 */
235 public String getClusterId(HttpSession session);
236
237 /* ------------------------------------------------------------ */
238 /**
239 * Called by the {@link SessionHandler} when a session is first accessed by a request.
240 *
241 * @param session the session object
242 * @param secure whether the request is secure or not
243 * @return the session cookie. If not null, this cookie should be set on the response to either migrate
244 * the session or to refresh a session cookie that may expire.
245 * @see #complete(HttpSession)
246 */
247 public HttpCookie access(HttpSession session, boolean secure);
248
249 /* ------------------------------------------------------------ */
250 /**
251 * Called by the {@link SessionHandler} when a session is last accessed by a request.
252 *
253 * @param session the session object
254 * @see #access(HttpSession, boolean)
255 */
256 public void complete(HttpSession session);
257
258 /**
259 * Sets the session id URL path parameter name.
260 *
261 * @param parameterName the URL path parameter name for session id URL rewriting (null or "none" for no rewriting).
262 * @see #getSessionIdPathParameterName()
263 * @see #getSessionIdPathParameterNamePrefix()
264 */
265 public void setSessionIdPathParameterName(String parameterName);
266
267 /**
268 * @return the URL path parameter name for session id URL rewriting, by default "jsessionid".
269 * @see #setSessionIdPathParameterName(String)
270 */
271 public String getSessionIdPathParameterName();
272
273 /**
274 * @return a formatted version of {@link #getSessionIdPathParameterName()}, by default
275 * ";" + sessionIdParameterName + "=", for easier lookup in URL strings.
276 * @see #getSessionIdPathParameterName()
277 */
278 public String getSessionIdPathParameterNamePrefix();
279
280 /**
281 * @return whether the session management is handled via cookies.
282 */
283 public boolean isUsingCookies();
284
285 /**
286 * @return whether the session management is handled via URLs.
287 */
288 public boolean isUsingURLs();
289
290 public Set<SessionTrackingMode> getDefaultSessionTrackingModes();
291
292 public Set<SessionTrackingMode> getEffectiveSessionTrackingModes();
293
294 public void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes);
295
296 public SessionCookieConfig getSessionCookieConfig();
297
298 /**
299 * @return True if absolute URLs are check for remoteness before being session encoded.
300 */
301 public boolean isCheckingRemoteSessionIdEncoding();
302
303 /**
304 * @param remote True if absolute URLs are check for remoteness before being session encoded.
305 */
306 public void setCheckingRemoteSessionIdEncoding(boolean remote);
307 }