1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
46
47
48 /**
49 * The servlet context with which we are associated.
50 */
51 private ServletContext context = null;
52
53
54
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
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 }