package us.mn.state.health.lims.common.servlet.startup; import org.quartz.SchedulerException; import us.mn.state.health.lims.plugin.PluginLoader; import us.mn.state.health.lims.scheduler.IndependentThreadStarter; import us.mn.state.health.lims.scheduler.LateStartScheduler; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public final class StartStopListener implements ServletContextListener { private ServletContext context = null; private LateStartScheduler scheduler; private IndependentThreadStarter threadStarter; public StartStopListener() { } // This method is invoked when the Web Application // has been removed and is no longer able to accept // requests public void contextDestroyed(ServletContextEvent event) { this.context = null; if (threadStarter != null) { threadStarter.stopThreads(); } try { scheduler.shutdown(); } catch (SchedulerException e) { e.printStackTrace(); } System.out.println("\nShutting down context\n"); } // This method is invoked when the Web Application // is ready to service requests public void contextInitialized(ServletContextEvent event) { this.context = event.getServletContext(); scheduler = new LateStartScheduler(); scheduler.checkAndStartScheduler(); System.out.println("Scheduler started"); threadStarter = new IndependentThreadStarter(); threadStarter.startThreads(); System.out.println("Threads started"); new PluginLoader(event).load(); System.out.println("Plugins loaded"); } }