View Javadoc

1   /*
2   * Copyright 2004 The Apache Software Foundation
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   *
8   *     http://www.apache.org/licenses/LICENSE-2.0
9   *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16  
17  
18  package listeners;
19  
20  
21  import javax.servlet.ServletContext;
22  import javax.servlet.ServletContextEvent;
23  import javax.servlet.ServletContextListener;
24  import javax.servlet.http.HttpSessionAttributeListener;
25  import javax.servlet.http.HttpSessionBindingEvent;
26  import javax.servlet.http.HttpSessionEvent;
27  import javax.servlet.http.HttpSessionListener;
28  
29  
30  /**
31   * Example listener for context-related application events, which were
32   * introduced in the 2.3 version of the Servlet API.  This listener
33   * merely documents the occurrence of such events in the application log
34   * associated with our servlet context.
35   *
36   * @author Craig R. McClanahan
37   * @version $Revision: 267129 $ $Date: 2004-03-18 08:40:35 -0800 (Thu, 18 Mar 2004) $
38   */
39  
40  public final class SessionListener
41      implements ServletContextListener,
42  	       HttpSessionAttributeListener, HttpSessionListener {
43  
44  
45      // ----------------------------------------------------- Instance Variables
46  
47  
48      /**
49       * The servlet context with which we are associated.
50       */
51      private ServletContext context = null;
52  
53  
54      // --------------------------------------------------------- Public Methods
55  
56  
57      /**
58       * Record the fact that a servlet context attribute was added.
59       *
60       * @param event The session attribute event
61       */
62      public void attributeAdded(HttpSessionBindingEvent event) {
63  
64  	log("attributeAdded('" + event.getSession().getId() + "', '" +
65  	    event.getName() + "', '" + event.getValue() + "')");
66  
67      }
68  
69  
70      /**
71       * Record the fact that a servlet context attribute was removed.
72       *
73       * @param event The session attribute event
74       */
75      public void attributeRemoved(HttpSessionBindingEvent event) {
76  
77  	log("attributeRemoved('" + event.getSession().getId() + "', '" +
78  	    event.getName() + "', '" + event.getValue() + "')");
79  
80      }
81  
82  
83      /**
84       * Record the fact that a servlet context attribute was replaced.
85       *
86       * @param event The session attribute event
87       */
88      public void attributeReplaced(HttpSessionBindingEvent event) {
89  
90  	log("attributeReplaced('" + event.getSession().getId() + "', '" +
91  	    event.getName() + "', '" + event.getValue() + "')");
92  
93      }
94  
95  
96      /**
97       * Record the fact that this web application has been destroyed.
98       *
99       * @param event The servlet context event
100      */
101     public void contextDestroyed(ServletContextEvent event) {
102 
103 	log("contextDestroyed()");
104 	this.context = null;
105 
106     }
107 
108 
109     /**
110      * Record the fact that this web application has been initialized.
111      *
112      * @param event The servlet context event
113      */
114     public void contextInitialized(ServletContextEvent event) {
115 
116 	this.context = event.getServletContext();
117 	log("contextInitialized()");
118 
119     }
120 
121 
122     /**
123      * Record the fact that a session has been created.
124      *
125      * @param event The session event
126      */
127     public void sessionCreated(HttpSessionEvent event) {
128 
129 	log("sessionCreated('" + event.getSession().getId() + "')");
130 
131     }
132 
133 
134     /**
135      * Record the fact that a session has been destroyed.
136      *
137      * @param event The session event
138      */
139     public void sessionDestroyed(HttpSessionEvent event) {
140 
141 	log("sessionDestroyed('" + event.getSession().getId() + "')");
142 
143     }
144 
145 
146     // -------------------------------------------------------- Private Methods
147 
148 
149     /**
150      * Log a message to the servlet context application log.
151      *
152      * @param message Message to be logged
153      */
154     private void log(String message) {
155 
156 	if (context != null)
157 	    context.log("SessionListener: " + message);
158 	else
159 	    System.out.println("SessionListener: " + message);
160 
161     }
162 
163 
164     /**
165      * Log a message and associated exception to the servlet context
166      * application log.
167      *
168      * @param message Message to be logged
169      * @param throwable Exception to be logged
170      */
171     private void log(String message, Throwable throwable) {
172 
173 	if (context != null)
174 	    context.log("SessionListener: " + message, throwable);
175 	else {
176 	    System.out.println("SessionListener: " + message);
177 	    throwable.printStackTrace(System.out);
178 	}
179 
180     }
181 
182 
183 }