java监听器实现定时任务

来源:互联网 发布:kdj优化背离源码 编辑:程序博客网 时间:2024/05/17 23:03

1、java代码

package com.md.listen;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import com.md.entity.StoreInfo;
import com.md.service.implement.ListenServiceImpl;
import com.md.service.interfaces.IListenService;

public class Mylistener implements ServletContextListener{

private Logger logger=Logger.getLogger(Mylistener.class);
private StringBuffer sb=new StringBuffer();
private IListenService listenService=new ListenServiceImpl();
public void contextDestroyed(ServletContextEvent arg0) {
logger.info("==*********************====监听器已经销毁!项目关闭了!====*******************====");
}
public void contextInitialized(ServletContextEvent arg0) {
logger.info("==*********************====监听器监听到项目启动了!====*******************====");
try{
task();
logger.info("====%%%%%%%====启动定时任务成功!===%%%%%%%%===");
}catch(Exception e){
logger.error("====######===启动定时任务失败!===#######====");
}
}
//定时任务
public  void task(){
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, 13);        // 控制时 
calendar.set(Calendar.MINUTE, 33);                      // 控制分 
calendar.set(Calendar.SECOND, 00);                   // 控制秒 
Date time = calendar.getTime();                  // 得出执行任务的时间,此处为今天的01:01:01
Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask(){ 
public void run() {
logger.info("-------开始执行定时检查服务器是否接通的任务-------"); 
int total=0;
try {
List<StoreInfo> list=listenService.checkOrNot();
logger.info("-------开始执行每隔1小时检查一次定时检查服务器是否接通的任务-------"); 
for(StoreInfo storeinfo:list){
try {
Boolean m=PingIpUtil.pingIp(storeinfo.getMdmc(),storeinfo.getIpadd());//ping的結果
if(m==true){
logger.info(storeinfo.getMdmc()+"能ping通!");
Boolean b=listenService.getOneInfo(storeinfo.getIpadd(),sb.append("dg").toString());
if(b==true){
logger.info(storeinfo.getMdmc()+"----->没有故障!");
}
}else{
logger.error(storeinfo.getMdmc()+"不能ping通!请联系负责人协助解决!");
total++;
continue;
}
} catch (Exception e) {
logger.error(storeinfo.getMdmc()+"----->存在故障,请联系负责人协助解决!");
total++;
continue;
}
//拼接字符串,把不通的门店解析
//访问http://127.0.0.1/TestTransfer/go?csz=String
}
logger.error("---结果-------》共"+total+"家门店出现故障!");
logger.info("===开始发送邮件==》》》》》》》》》》》》》》》》》====");
//调用方法发送邮件
EmailUtil.startSendEmail("12345667@qq.com");
EmailUtil.startSendEmail("1234566@126.com");
logger.info("===发送邮件==》》》》》》》》》》》》》》》》》成功!====");
} catch (Exception e) {
logger.error("===执行定时任务失败!=="+e.getMessage());
}
logger.info("—--*******---—-执行定时检查门店服务器是否接通的任务完成——--******--–"); 
}
}, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天的这个时间(23:59:59)固定执行 时间

}

2、web.xml文件配置

  <listener>
  <listener-class>com.md.listen.Mylistener</listener-class>
  </listener>

0 0
原创粉丝点击