=================================================================== --- src/main/org/codehaus/xfire/transport/http/XFireConfigurableServlet.java (revision 1934) +++ src/main/org/codehaus/xfire/transport/http/XFireConfigurableServlet.java (working copy) @@ -10,6 +10,7 @@ import org.codehaus.xfire.XFireException; import org.codehaus.xfire.spring.XFireConfigLoader; import org.springframework.context.ApplicationContext; +import org.springframework.context.support.AbstractApplicationContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext; @@ -104,4 +105,17 @@ } } + public void destroy() + { + log.debug("Destroying XFireConfigurableServlet"); + ServletContext servletCtx = getServletContext(); + ApplicationContext appContext = (ApplicationContext)servletCtx.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); + if (appContext != null && + appContext instanceof AbstractApplicationContext) + { + // shutdown the beans + ((AbstractApplicationContext)appContext).close(); + } + super.destroy(); + } }