Mercurial > hg > ismi-richfaces
view src/main/java/de/mpiwg/itgroup/ismi/servlets/ServletLifecycleService.java @ 94:d2cee1040062
new servlet lifecycle listener to shut down Spring ApplicationBean.
author | casties |
---|---|
date | Thu, 20 Oct 2016 14:08:16 +0200 |
parents | |
children |
line wrap: on
line source
/** * */ package de.mpiwg.itgroup.ismi.servlets; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.log4j.Logger; import org.mpi.openmind.repository.services.ServiceRegistry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import de.mpiwg.itgroup.ismi.entry.beans.AbstractBean; import de.mpiwg.itgroup.ismi.entry.beans.ApplicationBean; /** * Class to handle ServletContextListener events for startup and shutdown. * * Should be added with a <listener> element in web.xml. * * @author casties * */ public class ServletLifecycleService implements ServletContextListener { private static Logger logger = Logger.getLogger(ServletLifecycleService.class); /* (non-Javadoc) * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent) */ @Override public void contextInitialized(ServletContextEvent ctxe) { // TODO: inititialize Spring bean here? logger.info("Servlet context initialized."); } /* (non-Javadoc) * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) */ @Override public void contextDestroyed(ServletContextEvent ctxe) { ServletContext srvCtx = ctxe.getServletContext(); // get Spring ApplicationBean from context ApplicationBean app = (ApplicationBean) srvCtx.getAttribute(AbstractBean.BEAN_APP); if (app != null) { // get Spring ApplicationContext from ApplicationBean ServiceRegistry srvReg = app.getServiceRegistry(); ApplicationContext context = srvReg.getApplicationContext(); if (context != null) { // run Spring shutdown hook logger.info("Closing Spring context."); ((AbstractApplicationContext) context).close(); } } logger.info("Servlet context destroyed."); } }