1 package org.apache.turbine.services.session;
2
3
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one
6 * or more contributor license agreements. See the NOTICE file
7 * distributed with this work for additional information
8 * regarding copyright ownership. The ASF licenses this file
9 * to you under the Apache License, Version 2.0 (the
10 * "License"); you may not use this file except in compliance
11 * with the License. You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing,
16 * software distributed under the License is distributed on an
17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18 * KIND, either express or implied. See the License for the
19 * specific language governing permissions and limitations
20 * under the License.
21 */
22
23
24 import java.io.Serializable;
25 import javax.servlet.http.HttpSessionActivationListener;
26 import javax.servlet.http.HttpSessionEvent;
27 import javax.servlet.http.HttpSessionListener;
28
29 /**
30 * This class is a listener for both session creation and destruction,
31 * and for session activation and passivation. It must be configured
32 * via your web application's <code>web.xml</code> deployment
33 * descriptor as follows for the container to call it:
34 *
35 * <blockquote><code><pre>
36 * <listener>
37 * <listener-class>
38 * org.apache.turbine.session.SessionListener
39 * </listener-class>
40 * </listener>
41 * </pre></code></blockquote>
42 *
43 * <code><listener></code> elemements can occur between
44 * <code><context-param></code> and <code><servlet></code>
45 * elements in your deployment descriptor.
46 *
47 * The {@link #sessionCreated(HttpSessionEvent)} callback will
48 * automatically add an instance of this listener to any newly created
49 * <code>HttpSession</code> for detection of session passivation and
50 * re-activation.
51 *
52 * @since 2.3
53 * @version $Id: SessionListener.java 1066925 2011-02-03 19:44:37Z ludwig $
54 * @author <a href="mailto:quintonm@bellsouth.net">Quinton McCombs</a>
55 * @author <a href="mailto:dlr@apache.org">Daniel Rall</a>
56 * @see javax.servlet.http.HttpSessionListener
57 */
58 public class SessionListener
59 implements HttpSessionListener, HttpSessionActivationListener, Serializable
60 {
61 // ---- HttpSessionListener implementation -----------------------------
62
63 /**
64 * Serial version.
65 */
66 private static final long serialVersionUID = -8083730704842809870L;
67
68 /**
69 * Called by the servlet container when a new session is created
70 *
71 * @param event Session creation event.
72 */
73 public void sessionCreated(HttpSessionEvent event)
74 {
75 TurbineSession.addSession(event.getSession());
76 event.getSession().setAttribute(getClass().getName(), this);
77 }
78
79 /**
80 * Called by the servlet container when a session is destroyed
81 *
82 * @param event Session destruction event.
83 */
84 public void sessionDestroyed(HttpSessionEvent event)
85 {
86 TurbineSession.removeSession(event.getSession());
87 }
88
89
90 // ---- HttpSessionActivationListener implementation -------------------
91
92 /**
93 * Called by the servlet container when an existing session is
94 * (re-)activated.
95 *
96 * @param event Session activation event.
97 */
98 public void sessionDidActivate(HttpSessionEvent event)
99 {
100 TurbineSession.addSession(event.getSession());
101 }
102
103 /**
104 * Called by the servlet container when a an existing session is
105 * passivated.
106 *
107 * @param event Session passivation event.
108 */
109 public void sessionWillPassivate(HttpSessionEvent event)
110 {
111 TurbineSession.removeSession(event.getSession());
112 }
113 }