- 论坛徽章:
- 0
|
listener学习笔记
2007-4-4 03:02下午
web.xml
cn.com.yitong.rerport.TimerListener.TimerListener
cn.com.yitong.rerport.orgtree.OrganListener
ackage cn.com.yitong.rerport.orgtree;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.*;
public class OrganListener implements ServletContextListener
{
private Timer timer = null;
SampleTask sampleTask; //封装的继承TimerTask的类
public void contextInitialized(ServletContextEvent event)
{
timer = new java.util.Timer(true);
/* Calendar c = Calendar.getInstance(); //得到时间对像
c.set(Calendar.HOUR_OF_DAY,23);
c.set(Calendar.MINUTE,27);
c.set(Calendar.SECOND,40);
Date date = c.getTime(); //设定时间为23点43分0秒
*/
sampleTask = new SampleTask(event.getServletContext()); //实例化封装类
event.getServletContext().log("准备加载机构");
// timer.schedule(sampleTask,date); //调用timer类的shcedule(定时调用)方法,第一个参数为继承TimerTask类的对像,第二个参数是设定的时间
timer.schedule(sampleTask,0,60*60*1000);
event.getServletContext().log ("准备加载机构就绪"); //每隔一个小时执行任务,第一个参数为继承TimerTask类的对像,第二个参数为执行任务前等待时间,此处0表示不等待,第三个参数为间隔时间,单位为毫秒
}
public void contextDestroyed(ServletContextEvent event)
{
// todo auto-generated method stub
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
===========================================================
package cn.com.yitong.rerport.TimerListener;
import javax.servlet.ServletContext;
import cn.com.yitong.rerport.dao.CallProcDao;
import java.util.TimerTask;
import java.util.*;
public class SampleTask extends TimerTask{
private ServletContext context;
private static boolean isRunning = false;
private static boolean flag = true;
private static final int C_SCHEDULE_HOUR = 6; //定时6点
public SampleTask(ServletContext context)
{
this.context = context;
}
public void run()
{
Date d = new Date();
if (!isRunning)
{
isRunning = true; //执行时将是否执行的状态改变为true
if (C_SCHEDULE_HOUR == d.getHours()) //判断是否到时
{
try
{
CallProcDao cpd = new CallProcDao(); //生成执行存储过程对像
cpd.CallProc("system","3400008888");
cpd.daoClose();
}
catch(Exception e)
{
e.printStackTrace();
}
}
isRunning = false; //执行完毕将状态改变为false
} else
{
context.log("上一次任务执行还未结束");
}
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88379/showart_2086998.html |
|