1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| package lims.jsf.hibernate;
import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements ServletContextListener, HttpSessionAttributeListener, HttpSessionListener {
private ServletContext context = null;
private HashMap<String, HttpSession> sessions = new HashMap<String, HttpSession>();
private static SessionListener me;
public void attributeAdded(HttpSessionBindingEvent event) {
System.out.println(("attributeAdded('" + event.getSession().getId() + "', '" + event.getName() + "', '"
+ event.getValue() + "')"));
//on récupère le datasource quand la session utilisateur est renseigné
if ("utilisateur".equalsIgnoreCase(event.getName())) {
HibernateSessionFactory.rebuildSessionFactory(event.getValue().toString());
}
}
public void attributeRemoved(HttpSessionBindingEvent event) {
//System.out.println("attributeRemoved('" + event.getSession().getId() + "', '" + event.getName() + "', '"
// + event.getValue() + "')");
}
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println(("attributeReplaced('" + event.getSession().getId() + "', '" + event.getName() + "', '"
+ event.getValue() + "')"));
}
public void contextDestroyed(ServletContextEvent event) {
System.out.println("contextDestroyed()");
this.context = null;
}
public void contextInitialized(ServletContextEvent event) {
this.context = event.getServletContext();
System.out.println("contextInitialized()");
}
public void sessionCreated(HttpSessionEvent event) {
sessions.put(event.getSession().getId(), event.getSession());
System.out.println("sessionCreated('" + event.getSession().getId() + "')");
}
public static SessionListener getInstance() {
return me;
}
public Iterator<HttpSession> getSessions() {
return sessions.values().iterator();
}
public void sessionDestroyed(HttpSessionEvent event) {
sessions.remove(event.getSession().getId());
System.out.println("sessionDestroyed('" + event.getSession().getId() + "')");
//on ferme la sessionfactory dès la destruction de la session
HibernateSessionFactory.closeSession();
}
} |
Partager