`
pingshizhe
  • 浏览: 5331 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

通过监听器写的后台运行的定时任务

阅读更多
web.xml:
<!-- to listener check nopower  start-->
    <listener> 
   <listener-class>com.hyct.crmsfa.TaskManager</listener-class> 
</listener>
<!-- to listener check nopower  end-->


TaskManager:
package com.hyct.crmsfa;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class TaskManager implements ServletContextListener {
//无延迟
public static final long NO_DELAY = 0;
public static final long PERIOD =30000 ;
//定时器
private Timer timer;

/**
* 在Web应用结束时停止任务
*/
public void contextDestroyed(ServletContextEvent sce) {
timer.cancel();//定时器销毁

}

/**
* 在Web应用启动时初始化任务
*/
public void contextInitialized(ServletContextEvent sce) {
//定义定时器
timer = new Timer(true);
timer.schedule(new StopofbizIfNoPower(), NO_DELAY, PERIOD);

}

}

StopofbizIfNoPower :
package com.hyct.crmsfa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.TimerTask;

import com.hyct.crmsfa.util.PingUtil;

public class StopofbizIfNoPower extends TimerTask{

@Override
public void run() {
Boolean isPing =  PingUtil.pingServer("www.baidu.com");
System.out.print("***********************检查是否断网了********************************");
System.out.print("***********************检查是否断网了********************************");

if(!isPing){
Runtime r = Runtime.getRuntime(); 
try {
Process p=r.exec("/home/huchy/workspace-new/crm/stopofbiz.sh");
if (p == null)
          {
System.out.println("Process错了");
return;
          }
BufferedReader in = null;
in = new BufferedReader(new
                 InputStreamReader(p.getInputStream()));
          String line = null;
          while ( (line = in.readLine()) != null)
          {
         
            System.out.println(line);
          }
          in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}

}

PingUtil:

package com.hyct.crmsfa.util;
import java.io.*;
public class PingUtil
{
    public static boolean pingServer(String server)
    {
      BufferedReader in = null;
      Runtime r = Runtime.getRuntime(); 
      boolean iFlag = false;
      String pingCommand = "ping "+"-c2 " + server ;
      System.out.println(pingCommand);
      try
      {
          Process p = r.exec(pingCommand);
          if (p == null)
          {
            return false;
          }
          in = new BufferedReader(new
                 InputStreamReader(p.getInputStream()));
          String line = null;
          while ( (line = in.readLine()) != null)
          {
            if (line.contains("64 bytes from"))
            {
            iFlag=true;
            }
            System.out.println(line);
          }
          in.close();
      }
      catch (Exception ex)
      {
          ex.printStackTrace();
          return false;
      }
      return iFlag;
    } 

};
分享到:
评论

相关推荐

    基于python+springboot的针对Windows Server 2008 R2的基线安全检测系统源码+项目说明.zip

    使用定时任务,定时监听,使用多线程接收不同客户端的数据,将数据处理后存入数据库。 ## py-client 客户端的脚本版本;通过WMI模块、安全配置文件、注册表、运行cmd等收集信息,并与数据库中的规则对比,进行主机...

    绿色守护 Greenify Donate 4.7.5 build 47500 中文多语免费版.zip

    请勿『绿色化』闹钟、即时通讯、启动器类的应用,除非你不常使用它们,也不再依赖其后台功能(比如定时任务、消息推送等)。请务必确认经过『绿色化』处理的应用没有丧失任何您认为重要的后台机制。 作为一个最低...

    绿色守护 greenify v 2.5.2 Beta1

    请勿『绿色化』闹钟、即时通讯、启动器类的应用,除非你不常使用它们,也不再依赖其后台功能(比如定时任务、消息推送等)。请务必确认经过『绿色化』处理的应用没有丧失任何您认为重要的后台机制。 相比其它流行的...

    vc++ 应用源码包_1

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 开发实例源码包

    它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...

    vc++ 应用源码包_2

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_3

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_6

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    vc++ 应用源码包_5

    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...

    python入门到高级全栈工程师培训 第3期 附课件代码

    11 函数闭包装饰器运行流程 12 函数闭包带参数装饰器 第21章 01 查询功能 02 修改功能 03 程序的解耦 04 module模块和包的介绍 05 模块的执行以及__name__ 06 关于模块的介绍 07 time时间模块 08 random模块 第22...

    入门学习Linux常用必会60个命令实例详解doc/txt

    因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...

    Linux指令一周通 (技术图书大系).azw3

    1.29 ftpshut指令:定时关闭ftp服务器 1.30 ftpwho指令:显示登录ftp用户信息 1.31 gunzip指令:解压缩文件 1.32 gzexe指令:压缩可执行文件 1.33 gzip指令:压缩文件 1.34 indent指令:调整C原始代码文件的格式 ...

    Java开发技术大全(500个源代码).

    accumulationByDoWhile.java 用do~while语句写的累加程序 accumulationByFor.java 用for语句写的累加程序 accumulationByWhile.java 用while语句写的累加程序 boolExample.java 演示boolean变量的程序 ...

Global site tag (gtag.js) - Google Analytics