package com.mossle.core.spring; import java.util.Collection; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class ProxyServletListener implements ServletContextListener, HttpSessionListener { private static Logger logger = LoggerFactory .getLogger(ProxyServletListener.class); private ApplicationContext ctx; public void contextInitialized(ServletContextEvent sce) { ctx = WebApplicationContextUtils.getWebApplicationContext(sce .getServletContext()); if (ctx == null) { logger.warn("cannot find applicationContext"); return; } Collection<ServletContextListener> servletContextListeners = ctx .getBeansOfType(ServletContextListener.class).values(); for (ServletContextListener servletContextListener : servletContextListeners) { servletContextListener.contextInitialized(sce); } } public void contextDestroyed(ServletContextEvent sce) { if (ctx == null) { logger.warn("cannot find applicationContext"); return; } Collection<ServletContextListener> servletContextListeners = ctx .getBeansOfType(ServletContextListener.class).values(); for (ServletContextListener servletContextListener : servletContextListeners) { servletContextListener.contextDestroyed(sce); } } public void sessionCreated(HttpSessionEvent se) { if (ctx == null) { logger.warn("cannot find applicationContext"); return; } Collection<HttpSessionListener> httpSessionListeners = ctx .getBeansOfType(HttpSessionListener.class).values(); for (HttpSessionListener httpSessionListener : httpSessionListeners) { httpSessionListener.sessionCreated(se); } } public void sessionDestroyed(HttpSessionEvent se) { if (ctx == null) { logger.warn("cannot find applicationContext"); return; } Collection<HttpSessionListener> httpSessionListeners = ctx .getBeansOfType(HttpSessionListener.class).values(); for (HttpSessionListener httpSessionListener : httpSessionListeners) { httpSessionListener.sessionDestroyed(se); } } }