Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281500
  • 博文数量: 179
  • 博客积分: 2995
  • 博客等级: 少校
  • 技术积分: 2100
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 10:21
文章分类

全部博文(179)

文章存档

2011年(1)

2010年(28)

2009年(150)

我的朋友

分类: Java

2009-11-05 14:21:12

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("上一次任务执行还未结束");
          }

        }
    }
 
阅读(741) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~