package org.ilrt.mca.servlet; import org.apache.log4j.Logger; import org.quartz.Scheduler; import org.quartz.impl.StdSchedulerFactory; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @see "http://kickjava.com/src/org/quartz/ee/servlet/QuartzInitializerServlet.java.htm" */ public class QuartzInitServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { log.info("QuartzInitServlet started."); super.init(config); StdSchedulerFactory factory; try { String configFile = config.getInitParameter("config-file"); String shutdownPref = config.getInitParameter("shutdown-on-unload"); if (shutdownPref != null) { performShutdown = Boolean.valueOf(shutdownPref); } if (configFile != null) { factory = new StdSchedulerFactory(configFile); } else { factory = new StdSchedulerFactory(); } scheduler = factory.getScheduler(); String startOnLoad = config.getInitParameter("start-scheduler-on-load"); if (startOnLoad == null || (Boolean.valueOf(startOnLoad))) { scheduler.start(); log("Scheduler has been started..."); } else { log("Scheduler has not been started. Use scheduler.start()"); } String factoryKey = config.getInitParameter("servlet-context-factory-key"); if (factoryKey == null) { factoryKey = QUARTZ_FACTORY_KEY; } log("Storing the Quartz Scheduler Factory in the servlet context at key: " + factoryKey); config.getServletContext().setAttribute(factoryKey, factory); } catch (Exception e) { log("Quartz Scheduler failed to initialize: " + e.toString()); throw new ServletException(e); } } @Override public void destroy() { if (!performShutdown) { return; } try { if (scheduler != null) { scheduler.shutdown(); } } catch (Exception e) { log("Quartz Scheduler failed to shutdown cleanly: " + e.toString()); e.printStackTrace(); } log.info("QuartzInitServlet shutdown."); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { response.sendError(HttpServletResponse.SC_FORBIDDEN); } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.sendError(HttpServletResponse.SC_FORBIDDEN); } private final Logger log = Logger.getLogger(RegistryInitServlet.class); public static final String QUARTZ_FACTORY_KEY = "org.quartz.impl.StdSchedulerFactory.KEY"; private boolean performShutdown = true; private Scheduler scheduler = null; }