1 //========================================================================
2 //Copyright 2004-2008 Mort Bay Consulting Pty. Ltd.
3 //------------------------------------------------------------------------
4 //Licensed under the Apache License, Version 2.0 (the "License");
5 //you may not use this file except in compliance with the License.
6 //You may obtain a copy of the License at
7 //http://www.apache.org/licenses/LICENSE-2.0
8 //Unless required by applicable law or agreed to in writing, software
9 //distributed under the License is distributed on an "AS IS" BASIS,
10 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 //See the License for the specific language governing permissions and
12 //limitations under the License.
13 //========================================================================
14
15 package org.mortbay.jetty;
16
17 import javax.servlet.http.HttpServletRequest;
18 import javax.servlet.http.HttpSession;
19
20 import org.mortbay.component.LifeCycle;
21
22 /** Session ID Manager.
23 * Manages session IDs across multiple contexts.
24 * @author gregw
25 *
26 */
27 /* ------------------------------------------------------------ */
28 /**
29 * @author gregw
30 *
31 */
32 public interface SessionIdManager extends LifeCycle
33 {
34 /**
35 * @param id The session ID without any cluster node extension
36 * @return True if the session ID is in use by at least one context.
37 */
38 public boolean idInUse(String id);
39
40 /**
41 * Add a session to the list of known sessions for a given ID.
42 * @param session The session
43 */
44 public void addSession(HttpSession session);
45
46 /**
47 * Remove session from the list of known sessions for a given ID.
48 * @param session
49 */
50 public void removeSession(HttpSession session);
51
52 /**
53 * Call {@link HttpSession#invalidate()} on all known sessions for the given id.
54 * @param id The session ID without any cluster node extension
55 */
56 public void invalidateAll(String id);
57
58 /**
59 * @param request
60 * @param created
61 * @return
62 */
63 public String newSessionId(HttpServletRequest request,long created);
64
65 public String getWorkerName();
66
67
68 /* ------------------------------------------------------------ */
69 /** Get a cluster ID from a node ID.
70 * Strip node identifier from a located session ID.
71 * @param nodeId
72 * @return
73 */
74 public String getClusterId(String nodeId);
75
76 /* ------------------------------------------------------------ */
77 /** Get a node ID from a cluster ID and a request
78 * @param clusterId The ID of the session
79 * @param request The request that for the session (or null)
80 * @return The session ID qualified with the node ID.
81 */
82 public String getNodeId(String clusterId,HttpServletRequest request);
83
84 }