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;
}
};
分享到:
相关推荐
使用定时任务,定时监听,使用多线程接收不同客户端的数据,将数据处理后存入数据库。 ## py-client 客户端的脚本版本;通过WMI模块、安全配置文件、注册表、运行cmd等收集信息,并与数据库中的规则对比,进行主机...
请勿『绿色化』闹钟、即时通讯、启动器类的应用,除非你不常使用它们,也不再依赖其后台功能(比如定时任务、消息推送等)。请务必确认经过『绿色化』处理的应用没有丧失任何您认为重要的后台机制。 作为一个最低...
请勿『绿色化』闹钟、即时通讯、启动器类的应用,除非你不常使用它们,也不再依赖其后台功能(比如定时任务、消息推送等)。请务必确认经过『绿色化』处理的应用没有丧失任何您认为重要的后台机制。 相比其它流行的...
任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。...
任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
11 函数闭包装饰器运行流程 12 函数闭包带参数装饰器 第21章 01 查询功能 02 修改功能 03 程序的解耦 04 module模块和包的介绍 05 模块的执行以及__name__ 06 关于模块的介绍 07 time时间模块 08 random模块 第22...
因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...
1.29 ftpshut指令:定时关闭ftp服务器 1.30 ftpwho指令:显示登录ftp用户信息 1.31 gunzip指令:解压缩文件 1.32 gzexe指令:压缩可执行文件 1.33 gzip指令:压缩文件 1.34 indent指令:调整C原始代码文件的格式 ...
accumulationByDoWhile.java 用do~while语句写的累加程序 accumulationByFor.java 用for语句写的累加程序 accumulationByWhile.java 用while语句写的累加程序 boolExample.java 演示boolean变量的程序 ...