今天客户和我说起,有时候系统用久了,会出现用户名、密码输入后总登录不了。
问了一下经理,他叫我写一个监听器,每隔一小时查一次数据库,我想此举大概是为了防止数据库假死吧,具体的还是有些模糊。
web.xml的代码如下:
<listener>
<listener-class>local.spring.action.LocalTimeListener</listener-class>
</listener>
<listener-class>local.spring.action.LocalTimeListener</listener-class>
</listener>
LocalTimeListener类:
public class LocalTimeListener implements ServletContextListener {
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
System.out.println("定时器已启动");
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
timer.schedule(new MyTask(event.getServletContext()), 0, 1*60* 60 * 1000); //一小时 //5* 60 * 1000为5分钟
event.getServletContext().log("已经添加任务调度表");
}
System.out.println("定时器已启动");
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
timer.schedule(new MyTask(event.getServletContext()), 0, 1*60* 60 * 1000); //一小时 //5* 60 * 1000为5分钟
event.getServletContext().log("已经添加任务调度表");
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
MyTask类:
public class MyTask extends java.util.TimerTask {
private static boolean isRunning = false;
private static boolean isRunning = false;
private ServletContext context = null;
public MyTask(ServletContext context) {
this.context = context;
}
this.context = context;
}
public void run() {
System.out.println("运行顶事器");
if (!isRunning) {
// System.out.println("执行任务");
Conn.query("select * from Users");
isRunning = true;
context.log("指定任务执行结束");
// }
System.out.println("运行顶事器");
if (!isRunning) {
// System.out.println("执行任务");
Conn.query("select * from Users");
isRunning = true;
context.log("指定任务执行结束");
// }
isRunning = false;
} else {
context.log("上一次任务执行还未结束");
}
}
}
} else {
context.log("上一次任务执行还未结束");
}
}
}