package com.revolsys.ui.web.servlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.event.ApplicationEventMulticaster; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.util.WebUtils; import com.revolsys.logging.Logs; import com.revolsys.ui.web.utils.HttpServletUtils; public class DispatcherServlet extends org.springframework.web.servlet.DispatcherServlet { /** * */ private static final long serialVersionUID = 1L; @Override public void destroy() { super.destroy(); final WebApplicationContext webApplicationContext = getWebApplicationContext(); if (webApplicationContext instanceof AbstractApplicationContext) { final AbstractApplicationContext cwac = (AbstractApplicationContext)webApplicationContext; cwac.getApplicationListeners().clear(); if (cwac.isActive()) { final ApplicationEventMulticaster eventMultiCaster = cwac.getBean( AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME, ApplicationEventMulticaster.class); eventMultiCaster.removeAllListeners(); } } } @Override protected void doService(final HttpServletRequest request, final HttpServletResponse response) throws Exception { final HttpServletRequest savedRequest = HttpServletUtils.getRequest(); final HttpServletResponse savedResponse = HttpServletUtils.getResponse(); try { HttpServletUtils.setRequestAndResponse(request, response); super.doService(request, response); request.removeAttribute(WebUtils.INCLUDE_CONTEXT_PATH_ATTRIBUTE); request.removeAttribute(WebUtils.INCLUDE_PATH_INFO_ATTRIBUTE); request.removeAttribute(WebUtils.INCLUDE_QUERY_STRING_ATTRIBUTE); request.removeAttribute(WebUtils.INCLUDE_REQUEST_URI_ATTRIBUTE); request.removeAttribute(WebUtils.INCLUDE_SERVLET_PATH_ATTRIBUTE); } catch (final AccessDeniedException e) { throw e; } catch (final Exception e) { Logs.error(this, e.getMessage(), e); throw e; } finally { if (savedRequest == null) { HttpServletUtils.clearRequestAndResponse(); } else { HttpServletUtils.setRequestAndResponse(savedRequest, savedResponse); } } } }