web.xml添加内容 建立Servlet
<servlet>
<servlet-name>StatServlet</servlet-name>
<servlet-class>cn.StatServlet</servlet-class>
<init-param>
<param-name>startTask</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>intervalTime</param-name >
<param-value>1</param-value >
</init-param>
<load-on-startup >4</load-on-startup >
</servlet>
<servlet-mapping>
<servlet-name>StatServlet</servlet-name>
<url-pattern>/StatServlet</url-pattern>
</servlet-mapping>
StatServlet类
package cn;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class StatServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private Timer timer1 = null;
private Task task1;
public void destroy() {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
public void init() throws ServletException {
ServletContext context = getServletContext();
String startTask = getInitParameter("startTask");
if(startTask.equals("true")){
timer1 = new Timer(true);
task1 = new Task(context);
//每分钟访问一次
timer1.schedule((TimerTask) task1, 1000, 1000*60);
}
}
}
Task类
package cn;
import java.io.IOException;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import cn.yicha.pay.log.StatWhiteNameLogger;
public class Task extends TimerTask{
public static final String REQUESTURL = "http://www.baidu.com";
public static boolean isOk = false;
private ServletContext context;
private static boolean isRunning = true;
public Task(ServletContext context){
this.context = context;
}
public void run() {
if(isRunning){
HttpClient client = null;
GetMethod getMethod = null;
int statusCode=888;
try {
client = new HttpClient();
getMethod = new GetMethod(REQUESTURL);
getMethod.setFollowRedirects(true);
//设置连接超时时间(单位毫秒)
client.setConnectionTimeout(10000);
//设置读数据超时时间(单位毫秒)
client.setTimeout(8000);
//执行getMethod
statusCode = client.executeMethod(getMethod);
} catch (HttpException e) {
//发生致命的异常,可能是协议不对或者返回的内容有问题
e.printStackTrace();
} catch (IOException e) {
//发生网络异常
e.printStackTrace();
} finally {
if(statusCode==200||statusCode==302){
isOk = true;
}else{
isOk = false;
}
//记日志
StatLogger.log(statusCode,isOk);
System.out.println("状态码----> "+statusCode+" isOk-------> "+isOk);
//释放连接
getMethod.releaseConnection();
}
}
}
}
分享到:
相关推荐
不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。
在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它提供了一种在后台线程中定期执行任务的能力。这个类主要用于计划将来某一时点执行的任务,或者定期重复执行的任务。本篇文章将深入探讨`Timer`类的...
`Timer`类提供了类似Java中的`Timer`功能,让我们能够设定一个延时后执行的任务。 首先,`Timer`类是`threading`模块的一部分,它基于Python的线程机制,可以在指定的时间间隔后启动一个新线程来执行指定的函数。...
本文实例讲述了C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析,分享给大家供大家参考。具体分析如下: 在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③...
### Timer事件的用法 #### 一、概述 在Windows应用程序开发中,定时器(Timer)是一种常用的组件,用于在指定的时间间隔内触发特定事件。本文将详细介绍在C#编程语言中三种不同的定时器实现方式:`System.Windows....
本文将深入探讨`System.Timer`的用法,以及如何解决其中的一些常见问题。 首先,`System.Timer`的工作原理是通过回调一个委托方法来执行指定的任务。创建`Timer`对象时,需要提供一个`TimerCallback`类型的委托,该...
C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4...
C#中timer类的用法关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Timers.Timer类里 System.Windows.Forms.Timer是应用于...
在《Java语言中Timer类的简洁用法》文档中,作者Tom White提出了一个增强的计划框架,旨在提供更大的灵活性,以应对各种复杂的定时任务需求。这个框架由两个类和一个接口组成,易于理解和使用,适合已经熟悉Java...
### C# TIMER 的用法详解 #### 一、概述 在C#中,`TIMER`是一种常见的用于定时执行任务的对象。它可以实现周期性地执行指定的任务,与线程功能相似,但具有一定的优势。本文将详细介绍`System.Windows.Forms.Timer...
本文实例讲述了python定时器(Timer)用法。分享给大家供大家参考。具体如下: # encoding: UTF-8 import threading #Timer(定时器)是Thread的派生类, #用于在指定时间后调用一个方法。 def func(): print '...
在VC++编程中,`Timer`是一个非常重要的组件,它允许开发者在特定的时间间隔执行某个操作,例如更新界面、监控系统状态或者实现周期性任务。本文将详细介绍如何在VC++中使用`Timer`,以及一些关键知识点和注意事项。...
本篇文章将深入探讨C# Timer控件的用法,包括如何使用它来控制背景音乐以及如何从子窗体影响父窗体的控件。 1. **C# Timer控件简介** C# Timer控件并不是直接在窗体上显示的控件,而是在后台运行并定期触发指定的...
Java中Timer的schedule()方法参数详解 Java中Timer的schedule()方法是Java中的一个定时任务机制,允许开发者在特定的时间点或时间间隔执行特定的任务。schedule()方法是Timer类中的一个方法,用于安排一个任务的...
了解并熟练掌握这些定时器的用法,能够极大地提高开发效率和系统性能。因此,这个测试程序集合对于STC8A8K的用户来说,是一份宝贵的参考资料。通过实践,你可以更好地掌握单片机的定时器操作,提升你的嵌入式系统...
PB9多Timer事件实例是PowerBuilder 9.0中关于定时器(Timer)使用的深入探讨。在编程领域,定时器是一种常见的工具,用于在特定时间间隔执行某项任务,这在许多应用程序中都非常实用,例如数据刷新、定时提醒或者...
Java 计时器 Timer 和 TimerTask 用法总结 Java 中的计时器(Timer)和 TimerTask 是一种常用的延迟执行技术,用于实现延迟执行某个任务或事件。下面将详细介绍 Timer 和 TimerTask 的用法和实现原理。 Timer ...