package com.breeze.webserver;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.breeze.metadata.Metadata;
import com.breeze.hib.HibernateMetadata;
@WebListener
public class AppContextListener implements ServletContextListener {
public static final String SESSIONFACTORY = "sessionFactory";
public static final String METADATA = "metadata";
// @Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("AppContextListener.contextInitialized begin");
// configures settings from hibernate.cfg.xml
Configuration configuration = new Configuration();
SessionFactory sessionFactory = configuration.configure().buildSessionFactory();
System.out.println("AppContextListener.contextInitialized: sessionFactory=" + sessionFactory);
// builds metadata from the Hibernate mappings
Metadata metadata = new HibernateMetadata(sessionFactory, configuration);
metadata.build();
System.out.println("AppContextListener.contextInitialized: metadata=" + metadata);
// Set the values in the context so they can be used in the NorthBreeze service class
ServletContext ctx = sce.getServletContext();
ctx.setAttribute(SESSIONFACTORY, sessionFactory);
ctx.setAttribute(METADATA, metadata);
}
// @Override
public void contextDestroyed(ServletContextEvent sce) {
// Clean up when the app is shut down
ServletContext ctx = sce.getServletContext();
SessionFactory sessionFactory = (SessionFactory) ctx.getAttribute(SESSIONFACTORY);
if (sessionFactory != null) {
sessionFactory.close();
}
}
}