利用ServletContextListener实现定时任务
一个实现ServletContextListener接口的类: StatisticsContextListener.java
package com.ed.cnc.servletListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.ed.cnc.city.StatisticsTask;
/**
* 统计ContextListener
* @author westd
*
*/
/**
* @author westd
*
*/
public class StatisticsContextListener implements ServletContextListener
{
private java.util.Timer timer = null;
/**
* 这个方法在Web应用服务做好接受请求的时候被调用。
*
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent event)
{
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
timer.schedule(new StatisticsTask(event.getServletContext()), 0, 60*60*1000);//每隔1小时
event.getServletContext().log("已经添加任务调度表");
}
/**
* 这个方法在Web应用服务被移除,没有能力再接受请求的时候被调用。
*
* @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent event)
{
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.ed.cnc.city.StatisticsTask;
/**
* 统计ContextListener
* @author westd
*
*/
/**
* @author westd
*
*/
public class StatisticsContextListener implements ServletContextListener
{
private java.util.Timer timer = null;
/**
* 这个方法在Web应用服务做好接受请求的时候被调用。
*
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent event)
{
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
timer.schedule(new StatisticsTask(event.getServletContext()), 0, 60*60*1000);//每隔1小时
event.getServletContext().log("已经添加任务调度表");
}
/**
* 这个方法在Web应用服务被移除,没有能力再接受请求的时候被调用。
*
* @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent event)
{
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
一个继承于TimerTask的一个类:StatisticsTask.java
package com.ed.cnc.city;
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
/**
* 统计任务
* @author westd
*
*/
public class StatisticsTask extends TimerTask
{
private static final int STATISTICS_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public StatisticsTask(ServletContext context)
{
this.context = context;
}
@Override
public void run()
{
Calendar cal = Calendar.getInstance();
//System.out.println(isRunning);
if (!isRunning)
{
if (STATISTICS_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) //查看是否为凌晨
{
isRunning = true;
context.log("开始执行指定任务");
//TODO 添加自定义的详细任务
executeTask();
//指定任务执行结束
isRunning = false;
context.log("指定任务执行结束");
}
}
else
{
context.log("上一次任务执行还未结束");
}
}
/**
* 执行任务
*/
public void executeTask()
{
System.out.println("任务1");
System.out.println("任务2");
}
}
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
/**
* 统计任务
* @author westd
*
*/
public class StatisticsTask extends TimerTask
{
private static final int STATISTICS_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public StatisticsTask(ServletContext context)
{
this.context = context;
}
@Override
public void run()
{
Calendar cal = Calendar.getInstance();
//System.out.println(isRunning);
if (!isRunning)
{
if (STATISTICS_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) //查看是否为凌晨
{
isRunning = true;
context.log("开始执行指定任务");
//TODO 添加自定义的详细任务
executeTask();
//指定任务执行结束
isRunning = false;
context.log("指定任务执行结束");
}
}
else
{
context.log("上一次任务执行还未结束");
}
}
/**
* 执行任务
*/
public void executeTask()
{
System.out.println("任务1");
System.out.println("任务2");
}
}
web.xml中添加如下代码:
<listener>
<listener-class>com.ed.cnc.servletListener.StatisticsContextListener</listener-class>
</listener>
<listener-class>com.ed.cnc.servletListener.StatisticsContextListener</listener-class>
</listener>
相关推荐
介绍了Java定时执行任务,给出了如何使用ServletContextListener实现定时运行java某个方法的例子,简单易用。
通过创建ServletContextListener监听器,socket来实现tcp/ip协议客户端数据的接收功能。这是一个maven项目,直接导入eclipse即可运行,此处监听的是9092端口,将项目运行起后,可以对其端口使用情况进行查看,在...
因为是通过接口传送数据,所以我就新建了一个web项目,在web.xml配置文件里配置一个监听器,然后该监听器再继承HttpServlet,同时实现ServletContextListener接口,很简单的一个定时任务的demo,可供大家参考。
主要介绍了Java基于ServletContextListener实现UDP监听,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
ServletContextListener使用详解
在SpringMVC中利用ServletContextListener初始化数据到内存
NULL 博文链接:https://chenhua-1984.iteye.com/blog/374683
ServletContextListener的应用案例 项目启动:创建新的空表, 项目关闭:删除表 百度六祎,期...
ServletContextListener完成在线人数统计和显示人员列表
java定时器的实现 本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。
听众 ServletContextListener,sesson,请求侦听器
本方案的原理是写一个实现了ServletContextListener接口的类,该类中有两个方法:public void contextInitialized,它是在应用启动时调用;另一个方法是:public void contextDestroyed,该方法是在应用结束时调用。
JavaWeb新版教程. jsp--ServletContextListener监听器演示.avi
案例-使用监听器完成定时生日祝福、,一、监听器Listener 二、邮箱服务器。 1.什么是监听器? 2.监听器有哪些? 3.监听三大域对象的创建与销毁的监听器 4.监听三大域对象的属性变化的 5.与session中的绑定的...
其中一种比较好的方式,是通过实现ServletContextListener接口进行坚挺,重写contextInitialized方法,实现自己需要进行的初始化操作,之后在web.xml中添加相应的listner,tomcat在启动服务时会调用相应方法。...
主要介绍了Java基于servlet监听器实现在线人数监控功能的方法,结合实例形式分析了ServletContextListener监听功能的相关使用步骤与操作技巧,需要的朋友可以参考下
企业drp系统经典实现。 包括: v1.0 * 用户添加 v1.1 * 采用Ajax判断用户代码是否重复 ... * ServletContextListener v3.1 * JfreeChart的应用 v3.2 * 采用Ajax实现下拉列表的联动 v3.3 * 验证码的使用
public class Test extends HttpServlet implements ServletContextListener { // 服务器停止时执行该事件 public void contextDestroyed(ServletContextEvent sce) { DeleteFile();// 删除启动服务器时建立的...
1.创建一个类实现 ServletContextListener (具体实现哪个Listener根据情况来判断) 2.在类上加入注解 @WebListener 3.重写 contextInitialized() 与 contextDestroyed() 方法 4.编写启动类 5.增加注解 @...