diff --git a/src/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java b/src/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java index 525ce96..1b99d88 100644 --- a/src/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java +++ b/src/java/net/brutex/xservices/util/cache/FindingsCacheServlet.java @@ -23,6 +23,7 @@ import java.util.Enumeration; import java.util.Iterator; import java.util.List; import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletContext; @@ -55,11 +56,12 @@ public class FindingsCacheServlet extends HttpServlet { .getLogger(FindingsCacheServlet.class); private final List configfiles = new ArrayList(); private final ObjectFactory FACTORY = new ObjectFactory(); + private ExecutorService executor; @Override public void init() throws ServletException { super.init(); - ExecutorService executor = (ExecutorService) getServletContext() + executor = (ExecutorService) getServletContext() .getAttribute("CACHE_EXECUTOR"); if(! this.initConfigList()) return; @@ -116,6 +118,7 @@ public class FindingsCacheServlet extends HttpServlet { executor.submit(new ThisRunnable(cbean)); + } logger.info("FindingsCacheServlet has been initialized."); @@ -343,4 +346,24 @@ public class FindingsCacheServlet extends HttpServlet { } } + + + + + /* (non-Javadoc) + * @see javax.servlet.GenericServlet#destroy() + */ + @Override + public void destroy() { + // TODO Auto-generated method stub + executor.shutdown(); + try { + executor.awaitTermination(3, TimeUnit.SECONDS); + logger.info("Cache Worker Threads have shut down."); + } catch (InterruptedException e) { + logger.error("Cache Worker Threads did not terminate within timeout.", e); + } + super.destroy(); + } + } \ No newline at end of file