通过监听器结合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>
浙公网安备 33010602011771号