package codeine.servlets; import java.io.IOException; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import codeine.executer.ThreadPoolUtils; import org.apache.log4j.Logger; import codeine.configuration.IConfigurationManager; import codeine.nodes.NodesRunner; import com.google.inject.Inject; import sun.nio.ch.ThreadPool; public class ReloadConfigurationServlet extends HttpServlet { private static final Logger log = Logger.getLogger(ReloadConfigurationServlet.class); private static final long serialVersionUID = 1L; @Inject private NodesRunner nodesRunner; @Inject private IConfigurationManager configurationManager; private ExecutorService threadPool = ThreadPoolUtils.newThreadPool(1, "ReloadConfigurationServlet"); @Override public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { log.info("ReloadConfigurationServlet called"); Runnable thread = new Runnable() { @Override public void run() { try { int millis = new Random().nextInt((int) TimeUnit.MINUTES.toMillis(1)); log.info("ReloadConfigurationServlet going to sleep " + millis); Thread.sleep(millis); } catch (InterruptedException e) { log.error(e); } configurationManager.refresh(); nodesRunner.run(); log.info("ReloadConfigurationServlet async finished"); } }; threadPool.submit(thread); res.getWriter().print("{result:'OK'}"); } }