001 package org.apache.turbine.services.session; 002 003 004 /* 005 * Licensed to the Apache Software Foundation (ASF) under one 006 * or more contributor license agreements. See the NOTICE file 007 * distributed with this work for additional information 008 * regarding copyright ownership. The ASF licenses this file 009 * to you under the Apache License, Version 2.0 (the 010 * "License"); you may not use this file except in compliance 011 * with the License. You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, 016 * software distributed under the License is distributed on an 017 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 018 * KIND, either express or implied. See the License for the 019 * specific language governing permissions and limitations 020 * under the License. 021 */ 022 023 024 import java.io.Serializable; 025 import javax.servlet.http.HttpSessionActivationListener; 026 import javax.servlet.http.HttpSessionEvent; 027 import javax.servlet.http.HttpSessionListener; 028 029 /** 030 * This class is a listener for both session creation and destruction, 031 * and for session activation and passivation. It must be configured 032 * via your web application's <code>web.xml</code> deployment 033 * descriptor as follows for the container to call it: 034 * 035 * <blockquote><code><pre> 036 * <listener> 037 * <listener-class> 038 * org.apache.turbine.session.SessionListener 039 * </listener-class> 040 * </listener> 041 * </pre></code></blockquote> 042 * 043 * <code><listener></code> elemements can occur between 044 * <code><context-param></code> and <code><servlet></code> 045 * elements in your deployment descriptor. 046 * 047 * The {@link #sessionCreated(HttpSessionEvent)} callback will 048 * automatically add an instance of this listener to any newly created 049 * <code>HttpSession</code> for detection of session passivation and 050 * re-activation. 051 * 052 * @since 2.3 053 * @version $Id: SessionListener.java 1066925 2011-02-03 19:44:37Z ludwig $ 054 * @author <a href="mailto:quintonm@bellsouth.net">Quinton McCombs</a> 055 * @author <a href="mailto:dlr@apache.org">Daniel Rall</a> 056 * @see javax.servlet.http.HttpSessionListener 057 */ 058 public class SessionListener 059 implements HttpSessionListener, HttpSessionActivationListener, Serializable 060 { 061 // ---- HttpSessionListener implementation ----------------------------- 062 063 /** 064 * Serial version. 065 */ 066 private static final long serialVersionUID = -8083730704842809870L; 067 068 /** 069 * Called by the servlet container when a new session is created 070 * 071 * @param event Session creation event. 072 */ 073 public void sessionCreated(HttpSessionEvent event) 074 { 075 TurbineSession.addSession(event.getSession()); 076 event.getSession().setAttribute(getClass().getName(), this); 077 } 078 079 /** 080 * Called by the servlet container when a session is destroyed 081 * 082 * @param event Session destruction event. 083 */ 084 public void sessionDestroyed(HttpSessionEvent event) 085 { 086 TurbineSession.removeSession(event.getSession()); 087 } 088 089 090 // ---- HttpSessionActivationListener implementation ------------------- 091 092 /** 093 * Called by the servlet container when an existing session is 094 * (re-)activated. 095 * 096 * @param event Session activation event. 097 */ 098 public void sessionDidActivate(HttpSessionEvent event) 099 { 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 }