I have a servlet S which handles callbacks from a 3rd party site.
The callback invocations happen in a specific order. Thus, I need to queue them.
I propos
Using Listeners I created a ThreadPool that I can integrate with a legacy Tomcat app using the ServletContext to store the ThreadPool and let the listener manage the life cycle so it won't linger.
@WebListener
public class MyThreadPool implements ServletContextListener {
private static final String CONTEXT_ATTRIBUTE = "MyThreadPool";
private ExecutorService myThreadPool;
@Override
public void contextInitialized(ServletContextEvent sce) {
myThreadPool = Executors.newFixedThreadPool(10);
sce.getServletContext().setAttribute(CONTEXT_ATTRIBUTE, myThreadPool);
}
public static ExecutorService getPool(Servlet servlet) {
return (ExecutorService) servlet.getServletConfig()
.getServletContext().getAttribute(CONTEXT_ATTRIBUTE);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
myThreadPool.shutdown();
sce.getServletContext().removeAttribute(CONTEXT_ATTRIBUTE);
}
}