package xin.glue.scheduling; import java.util.Timer; import java.util.TimerTask; import java.util.Vector; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class XinJobListener implements ServletContextListener { private final Vector vectors = new Vector(); // 定时器数组 //private final int period = 3 * 60; // 轮询周期 public XinJobListener() { } public void contextInitialized(ServletContextEvent event) { schedule(new XinParseTask("XinZipAction-service"), 3 * 24 * 60 * 60); //三天执行一次,删除部分表中7天前的数据 schedule(new XinParseTask("XinHMResAction-service"), 30); // 30秒钟执行一次,解析接口表TBH06_L2_RECV_DATA数据 schedule(new XinParseTask("XinG2ResAction-service"), 30); //40秒钟执行一次,解析接口表TBG06_L2_RECV_DATA数据 schedule(new XinParseTask("XinLabResAction-service"), 30); //40秒钟执行一次,解析成分接口表TBG06_L2_CHEM_RESULT数据 } public void contextDestroyed(ServletContextEvent event) { for (int i = 0, size = vectors.size(); i < size; i++) { Timer timer = (Timer) vectors.get(i); timer.cancel(); } vectors.clear(); } private void schedule(TimerTask task, long period) { Timer timer = new Timer(); vectors.add(timer); timer.schedule(task, 10 * 1000, period * 1000); } }