package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class test implements ServletContextListener {
private Timer timer = null;
//启动定时器
@Override
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
event.getServletContext().log("定时器已启动");
timer.scheduleAtFixedRate(new TestTask2(), 7 * 1000, 10 * 1000); // 每小时执行一次run方法 测试5秒5 * 1000
}
//定时器销毁
@Override
public void contextDestroyed(ServletContextEvent event) {
if (timer != null) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
//ping ip
public void pingIp(String ip) {
Runtime runtime =Runtime.getRuntime(); // 获取当前程序的运行进对象
Process process = null; //声明处理类对象
String line = null; //返回行信息
InputStream is = null; //输入流
InputStreamReader isr = null;// 字节流
BufferedReader br = null;
boolean res = false;// 结果
try {
process =runtime.exec("ping " + ip); // PING
is =process.getInputStream(); // 实例化输入流
isr = new InputStreamReader(is);// 把输入流转换成字节流
br = new BufferedReader(isr);// 从字节中读取文本
while ((line= br.readLine()) != null) {
if(line.contains("TTL")) {
res= true;
break; }
}
is.close();
isr.close();
br.close();
if (res){
System.out.println("ping通 ...");
} else{
System.out.println("ping不通...");
}
} catch (IOException e) {
System.out.println(e);
runtime.exit(1);
}
}
}
//内部类
class TestTask2 extends TimerTask {
protected final Log logger = LogFactory.getLog(getClass());
private static boolean isRunning = false;
String[] ip = {};
@Override
public void run() {
// 是否整点
// Calendar c = Calendar.getInstance();
// if (C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))
if (!isRunning) {
isRunning = true;
logger.info("开始执行任务。");
/* new test().pingIp[](ip);
*/
isRunning = false;
logger.info("任务执行结束。");
} else {
logger.info("上一次任务执行还未结束,本次任务不能执行。");
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class test implements ServletContextListener {
private Timer timer = null;
//启动定时器
@Override
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
event.getServletContext().log("定时器已启动");
timer.scheduleAtFixedRate(new TestTask2(), 7 * 1000, 10 * 1000); // 每小时执行一次run方法 测试5秒5 * 1000
}
//定时器销毁
@Override
public void contextDestroyed(ServletContextEvent event) {
if (timer != null) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
//ping ip
public void pingIp(String ip) {
Runtime runtime =Runtime.getRuntime(); // 获取当前程序的运行进对象
Process process = null; //声明处理类对象
String line = null; //返回行信息
InputStream is = null; //输入流
InputStreamReader isr = null;// 字节流
BufferedReader br = null;
boolean res = false;// 结果
try {
process =runtime.exec("ping " + ip); // PING
is =process.getInputStream(); // 实例化输入流
isr = new InputStreamReader(is);// 把输入流转换成字节流
br = new BufferedReader(isr);// 从字节中读取文本
while ((line= br.readLine()) != null) {
if(line.contains("TTL")) {
res= true;
break; }
}
is.close();
isr.close();
br.close();
if (res){
System.out.println("ping通 ...");
} else{
System.out.println("ping不通...");
}
} catch (IOException e) {
System.out.println(e);
runtime.exit(1);
}
}
}
//内部类
class TestTask2 extends TimerTask {
protected final Log logger = LogFactory.getLog(getClass());
private static boolean isRunning = false;
String[] ip = {};
@Override
public void run() {
// 是否整点
// Calendar c = Calendar.getInstance();
// if (C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))
if (!isRunning) {
isRunning = true;
logger.info("开始执行任务。");
/* new test().pingIp[](ip);
*/
isRunning = false;
logger.info("任务执行结束。");
} else {
logger.info("上一次任务执行还未结束,本次任务不能执行。");
}
}
}
-----------------------------------------------------------------------
web.xml配置监听器
<listener>
<listener-class>test.ServerInfoController</listener-class>
</listener>