1
22
23 package com.liferay.portal.kernel.servlet;
24
25 import java.util.ArrayList;
26 import java.util.Iterator;
27 import java.util.List;
28
29 import javax.servlet.http.HttpSessionEvent;
30 import javax.servlet.http.HttpSessionListener;
31
32
44 public class PortletSessionListenerManager implements HttpSessionListener {
45
46 public static void addListener(HttpSessionListener listener) {
47 _listeners.add(listener);
48 }
49
50 public static void removeListener(HttpSessionListener listener) {
51 _listeners.remove(listener);
52 }
53
54 public void sessionCreated(HttpSessionEvent event) {
55 ClassLoader contextClassLoader =
56 Thread.currentThread().getContextClassLoader();
57
58 try {
59 Iterator<HttpSessionListener> itr = _listeners.iterator();
60
61 while (itr.hasNext()) {
62 HttpSessionListener listener = itr.next();
63
64 ClassLoader listenerClassLoader =
65 listener.getClass().getClassLoader();
66
67 Thread.currentThread().setContextClassLoader(
68 listenerClassLoader);
69
70 listener.sessionCreated(event);
71 }
72 }
73 finally {
74 Thread.currentThread().setContextClassLoader(contextClassLoader);
75 }
76 }
77
78 public void sessionDestroyed(HttpSessionEvent event) {
79 Iterator<HttpSessionListener> itr = _listeners.iterator();
80
81 while (itr.hasNext()) {
82 HttpSessionListener listener = itr.next();
83
84 listener.sessionDestroyed(event);
85 }
86 }
87
88 private static List<HttpSessionListener> _listeners =
89 new ArrayList<HttpSessionListener>();
90
91 }