001 package edu.nrao.sss.webapp; 002 003 import javax.servlet.ServletContextListener; 004 import javax.servlet.ServletContextEvent; 005 006 import org.apache.log4j.Logger; 007 import org.hibernate.HibernateException; 008 009 import edu.nrao.sss.dao.HibernateDao; 010 011 /** 012 * When a context is closed this listener destroys all open Hibernate 013 * SessionFactories that are in the HibernateDao class. 014 */ 015 public class HibernateServletContextListener implements ServletContextListener 016 { 017 private static final Logger log = Logger.getLogger(HibernateServletContextListener.class); 018 019 public HibernateServletContextListener() {} 020 021 /** 022 * Empty 023 */ 024 public void contextInitialized(ServletContextEvent sce) {} 025 026 /** 027 * closes session factories 028 * 029 * @see HibernateDao 030 */ 031 public void contextDestroyed(ServletContextEvent sce) 032 { 033 try 034 { 035 HibernateDao.destroyAllFactories(); 036 } 037 catch(HibernateException he) 038 { 039 //Since we're closing the whole context, we should just log 040 //the event and move on. 041 log.error("Error closing session factoriess during context close", he); 042 } 043 } 044 }