通过监听器结合tomcat定时发送信息

第一:

package com.listen;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ListenSearch implements ServletContextListener {

private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");

//调用ListenRssTask类 1000*3600是当前的毫秒数
timer.schedule(new ListenRssTask(event.getServletContext()), 0, 1000*3600);
event.getServletContext().log("已经添加任务调度表");
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}

}

第二:

package com.listen;

import java.io.*;
import java.util.*;

import javax.servlet.ServletContext;

import jbs.db.DBQuery;

import com.yixoo.ulib.Kernel;
import jbs.jsp.Template;

import jbs.html.HtmlUtils;

public class ListenRssTask extends TimerTask {
       // 定义一个时间变量
private static final int C_SCHEDULE_HOUR = 16;
private static boolean isRunning = false;
private ServletContext context = null;
public ListenRssTask(ServletContext context) {
this.context = context;
}
public void run() {
         //创建一个时间的对象
   Calendar cal = Calendar.getInstance();   
   if (!isRunning) {
   //数据连接池名称
   String GLOBAL_DBPOOLNAME = "bidding";
   //获取数据层的对象
   DBQuery db = new DBQuery(GLOBAL_DBPOOLNAME);
   //判断当前时间是不是要执行的时间
   int time=Integer.parseInt(cal.get(Calendar.HOUR_OF_DAY)+"");
   //判断是不是要执行的时间
   if((time>7)||(time<21)) {
   isRunning = true;
   context.log("开始执行指定任务");


   //.......此处可以添加自己要执行的业务逻辑//

   isRunning = false;
   context.log("指定任务执行结束");
   }
   } else {
   context.log("上一次任务执行还未结束");
   }

}

}

第三:

<listener>
      <listener-class>com.listen.ListenSearch</listener-class>
    </listener>

posted @ 2009-01-05 20:38  瞭望者  阅读(237)  评论(0)    收藏  举报