package com.chinacreator.videoalliance.order.util; import com.chinacreator.videoalliance.common.util.DataSource; import com.frameworkset.common.poolman.SQLExecutor; import org.apache.log4j.Logger; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import java.util.TimerTask; /** * 监控器,用于项目启动时连接数据库,每隔5秒连接一次 * 防止数据库长时间未连接造成断连 * @author xu.zhou * @date 20210108 */ public class ContextListener implements ServletContextListener { private java.util.Timer timer = null; private static Logger logger = Logger.getLogger(TimerTask.class); @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } @Override public void contextInitialized(ServletContextEvent arg0) { logger.info("启动定时任务"); timer = new java.util.Timer(true); //每天的date时刻执行task,每隔persion 时间重复执行 //timer.schedule(new Dbtask(), 1000, 1000 * 5); timer.schedule(new TimerTask() { @Override public void run() { try { try{ String sql = "select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss') from dual"; String res = SQLExecutor.queryFieldWithDBName(DataSource.NET3G, sql); logger.info("当前时间:"+res); }catch(Exception e){ logger.error(e.getMessage()); e.printStackTrace(); } finally { } } catch (Exception e) { logger.error("监控器定时任务执行出现异常,"+e.getMessage(),e); } } }, 1000, 1000 * 5);//1秒钟后开始执行,每隔5秒钟执行一次 logger.info("已经添加任务调度表"); } }