基于ServletContextListener以及TimerTask实现Java/WEB的定时任务处理
来源:互联网 发布:php 取数组最大值 编辑:程序博客网 时间:2024/05/29 19:47
简述
在Java/WEB的开发过程中,我们往往需要服务器端的程序能够定时自动为我们处理一点工作,比如定时搜索数据库中的数据, 或者定是向用户发送自动邮件或短信,或者是定时处理session或是application中的过期内容。
在大部分情况下,其实TimerTask已经足够进行这些处理了。但是在某些特定的环境下,例如定时自动处理服务器端application中的数据,那么我们就需要在定是程序中处理ServletContext对象。
但是因为ServletContext是一个标标准准的web对象,在普通的类,比如TimerTask的派生子类中,很难直接操作它,这个时候,我们就需要结合ServletContextListener来进行相关的处理了。
一、编写自动化业务处理类,并继承TimerTask
首先我们需要一个自动化业务处理类,这个类用来处理我们真正想要做的事情:
public class YourTimer extends TimerTask { private ServletContext servletContext; public YourTimer(ServletContext servletContext) {super();this.servletContext = servletContext; } @Override public void run() {//在这里撰写业务处理代码 } }上述代码片段中的run就是核心的业务处理方法,当我们完成所有的代码,并执行程序的时候,最终这个run方法就会定时为我们解决问题。
注意这个类是继承了TimerTask的,并且它有一个私有属性ServletContext对象,并且在类的构造器中会初始化这个对象。
二、编写监听器类
public class YourListener extends HttpServlet implements ServletContextListener { public void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stub } /** * 监听程序开始执行 */ public void contextInitialized(ServletContextEvent arg0) {YourTimer yourTimer = new YourTimer(arg0.getServletContext());/** * 每30秒处理一次 */Timer timer = new Timer();timer.schedule(yourTimer, 0, 30000); }}上面的代码片段非常简单,我们自己的这个监听类需要继承HttpServlet,同时实现ServletContextListener接口。
当我们的web容器启动的时候,这个类就会被调用,并且执行contextInitialized这个方法,所以我们只需要在这个方法里直接运行我们的Timer类来进行定时处理就可以了。
三、在web.xml中配置监听器
最后一步,在web.xml文件中配置监听器即可:
<listener> <listener-class>com.yourpackage.YourListener</listener-class></listener>
阅读全文
0 0
- 基于ServletContextListener以及TimerTask实现Java/WEB的定时任务处理
- 基于Timer和TimerTask的定时任务
- Java定时多线程任务实现(TimerTask)
- 利用ServletContextListener实现定时任务
- 利用ServletContextListener实现定时任务
- 利用ServletContextListener 实现定时任务
- ServletContextListener定时任务的使用
- ServletContextListener定时任务的使用
- 实现定时任务【Timer+TimerTask】
- 浅谈java定时任务:TimerTask
- java 定时任务 Timer TimerTask
- java定时任务调度TimerTask
- java web定时任务的实现
- Java Web实现定时任务
- Spring定时任务的实现方式--Timer和TimerTask
- 定时任务:Java中Timer和TimerTask的使用
- 定时任务:Java中Timer和TimerTask的使用
- 定时任务:Java中Timer和TimerTask的使用
- React Native常见问题解决
- Application
- 寻宝---kruskal
- untiy Application API
- android的文件操作
- 基于ServletContextListener以及TimerTask实现Java/WEB的定时任务处理
- Python中is和==的区别
- Java数组去重的多种方法
- HDU-2017 多校训练赛9-1005-FFF at Valentine
- 海思Hi3521A开发概述
- java提高篇(九)-----实现多重继承
- 如何在小程序中调用本地接口
- PAT-B 1011A+B和C
- 算法模板之二分匹配