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 Thread currentThread = Thread.currentThread();
56
57 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
58
59 try {
60 Iterator<HttpSessionListener> itr = _listeners.iterator();
61
62 while (itr.hasNext()) {
63 HttpSessionListener listener = itr.next();
64
65 ClassLoader listenerClassLoader =
66 listener.getClass().getClassLoader();
67
68 currentThread.setContextClassLoader(listenerClassLoader);
69
70 listener.sessionCreated(event);
71 }
72 }
73 finally {
74 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 }