`
Callan
  • 浏览: 735990 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java定时器在Web中的应用

    博客分类:
  • Java
阅读更多

在web中,定时器的启动一般随web server的启动而启动,一般有两种方法.

方法一:在web.xml里配置一个Servlet,并设置其随web server的启动而启动。然后在该Servlet的init()方法里启动定时器,在destory()方法里销毁定时器。
方法二:在web.xml里配置一个Listener,然后在该Listener的初始化方法里启动定时器,在其销毁的方法朝左销毁定时器。

在servlet中启动定时器
java 代码
  1. import java.io.IOException;   
  2. import java.util.Timer;   
  3. import javax.servlet.RequestDispatcher;   
  4. import javax.servlet.ServletContext;   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.http.HttpServlet;   
  7. import javax.servlet.http.HttpServletRequest;   
  8. import javax.servlet.http.HttpServletResponse;   
  9.   
  10. import org.apache.commons.lang.StringUtils;   
  11.   
  12. public class ConvergeDataServlet extends HttpServlet {   
  13.   
  14.     private static final long serialVersionUID = 1L;   
  15.   
  16.     private Timer timer1 = null;   
  17.        
  18.     private Task task1;   
  19.        
  20.     /**  
  21.      * Constructor of the object.  
  22.      */  
  23.     public ConvergeDataServlet() {   
  24.         super();   
  25.     }   
  26.   
  27.     /**  
  28.      * Destruction of the servlet. 
     
  29.      */  
  30.     public void destroy() {   
  31.         super.destroy();    
  32.         if(timer1!=null){   
  33.             timer1.cancel();   
  34.         }   
  35.     }   
  36.   
  37.        
  38.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  39.             throws ServletException, IOException {   
  40.            
  41.     }   
  42.   
  43.        
  44.     public void doPost(HttpServletRequest request, HttpServletResponse response)   
  45.             throws ServletException, IOException {   
  46.         doGet(request, response);          
  47.     }   
  48.   
  49.     // init方法启动定时器   
  50.     public void init() throws ServletException {   
  51.            
  52.         ServletContext context = getServletContext();   
  53.            
  54.         // (true为用定时间刷新缓存)   
  55.         String startTask = getInitParameter("startTask");   
  56.                    
  57.         // 定时刷新时间(分钟)   
  58.         Long delay = Long.parseLong(getInitParameter("delay"));   
  59.            
  60.         // 启动定时器   
  61.         if(startTask.equals("true")){   
  62.             timer1 = new Timer(true);   
  63.             task1 = new Task(context);   
  64.             timer1.schedule(task1, delay * 60 * 1000, delay * 60 * 1000);   
  65.         }   
  66.     }   
  67. }   

 定时执行操作

java 代码
  1.   
  2. /**  
  3.  *   
  4.  * @author callan  
  5.  */  
  6. import java.util.TimerTask;   
  7.   
  8. import javax.servlet.ServletContext;   
  9.   
  10. public class Task extends TimerTask{   
  11.   
  12.     private ServletContext context;   
  13.        
  14.     private static boolean isRunning = true;   
  15.        
  16.     public Task(ServletContext context){   
  17.         this.context = context;   
  18.     }   
  19.        
  20.            
  21.     @Override  
  22.     public void run() {   
  23.         if(isRunning){   
  24.              
  25.         }   
  26.     }   
  27.   
  28. }   

 

在web.xml配置这个servlet为服务启动时就调用servlet

<servlet></servlet>
  < servlet >
     < servlet-name >taskservlet< / servlet-name >
    < servlet-class >com.task< /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 >300< /load-on-startup >
  < /servlet >

<servlet></servlet>



 

分享到:
评论
9 楼 cosmo1987 2012-12-13  
劉罡 写道
请问,如果我需要使用Java定时器操作一个无法继承TimerTask该如何实现?
这个类已经继承了某个类,所以无法再继承 TimerTask。

看你定义的这个类的用途。如果这个类被定义为是一种扩展的定时器,那就必须继承TimerTask,不应该继承其他的类。而如果该类不是一个定时器,而是实现了某种功能的个对象,那它就不是定时器,创建一个新的定时器类,然后把你需要定时调用的那个功能对象combine进去就好了。

举个简单但是可能不是很恰当的例子:
你有一个抽象类叫做抽象笔记本类,抽象笔记本有开机和关机的功能。然后又定义了一个联想笔记本继承自抽象笔记本类。此时你需要让你的联想笔记本定时开机。

从这里我们就可以看出。联想笔记本并不适合去继承TimerTask。而应该继承抽象笔记本。而此时需要创建一个新的Task用于定时启动你的联想笔记本。在这个新的Task中,包含你的联想笔记本,然后定时启动它就可以了。
8 楼 chenxiang_chenxiang 2012-09-14  
第二种怎么列出来呢
7 楼 劉罡 2010-04-08  
请问,如果我需要使用Java定时器操作一个无法继承TimerTask该如何实现?
这个类已经继承了某个类,所以无法再继承 TimerTask。
6 楼 can_do 2008-12-31  
58行的:
Long delay = Long.parseLong(getInitParameter("delay"));   
应该为:
Long delay = Long.parseLong(getInitParameter("intervalTime"));   
5 楼 shileijava 2008-07-18  
           
4 楼 Callan 2008-06-07  
是的 ,要将delay 应该换成 intervalTime

<listener>
<listener-class>
calss
</listener-class>
</listener>
3 楼 abcs007 2008-06-06  
只是给出了servlet启动的方式,但Listener方式没有给出,希望能补上。

好像58行有问题,delay 应该换成 intervalTime
2 楼 Callan 2008-05-09  
就是通过servlet启动
或通过Listener启动两种
1 楼 yangyi336 2008-05-08  
不怎么明白
楼主 能否给我个比较全面的
yangyi633@163.com
谢谢咯

相关推荐

    Java定时器在Web中的应用.doc

    Java定时器在Web应用中的实现主要涉及到`java.util.Timer`类和`ServletContextListener`接口,它们在Spring、Struts、Hibernate等框架环境下同样适用。本文将详细解释如何使用这两个核心组件来实现在Web环境中定时...

    java web定时器例子

    在Java Web应用中,Spring框架提供了更强大的定时任务支持。通过`@EnableScheduling` 注解启用定时任务配置,并在具体的类上使用`@Scheduled` 注解来定义定时任务。 ```java import org.springframework.scheduling...

    Java定时器

    在Web应用程序中,可以利用Servlet侦听器结合`Timer`来实现更复杂的定时任务。例如,可以在应用启动时初始化`Timer`,并在应用关闭时销毁它,以确保资源的正确管理。 ```java import javax.servlet....

    JAVA中定时器的使用

    在实际应用中,定时器可以用于各种场景,例如计划任务、缓存更新、日志记录等。例如,在一个 web 应用程序中,可以使用定时器来计划任务,例如每天凌晨执行某个任务。在一个游戏应用程序中,可以使用定时器来更新...

    java 定时器 spring 定时器

    总结一下,Java定时器虽然简单易用,但在复杂应用中可能显得不足。Spring定时器通过提供丰富的配置选项和强大的`TaskScheduler`接口,成为企业级应用中定时任务的首选。使用Spring定时器,开发者能够更高效地管理和...

    java定时器结合spring

    Java定时器结合Spring框架可以创建灵活且可扩展的定时任务,这种技术在许多企业级应用中非常常见,用于执行周期性的后台任务,如数据清理、报告生成或服务调用等。下面将详细介绍如何在Spring中集成Java定时器,并...

    JAVA定时器word文档

    在Web应用的配置文件`web.xml`中,需要添加监听器配置,以便在Web应用启动时加载`WorkServiceImpl`类。这通过`&lt;listener&gt;`标签和`&lt;listener-class&gt;`子标签完成,指定监听器类的全限定名。 总结一下,Java定时器...

    java定时器.pdf

    总结来说,Java定时器提供了一种灵活的方式来安排和管理定时任务,无论是在桌面应用还是Web应用中,都能发挥重要作用。正确理解和使用`Timer`和`TimerTask`,能够帮助开发者实现各种复杂的定时需求,如数据同步、...

    spring和java定时器

    在提供的Java代码片段中,`SPListener`实现了`ServletContextListener`接口,这意味着它会在Web应用启动时初始化,并在Web应用停止时销毁。在这个监听器中,创建了一个`Timer`实例,计划在每天特定时间(15:16:00)...

    web定时器组件

    Web定时器组件是Java Web应用中用于执行周期性任务的关键工具。它允许开发者在特定时间间隔内自动执行某些操作,例如数据同步、日志清理、发送通知等。这些任务可以是后台运行的,不会影响用户的交互体验。在本文中...

    java定时器的实现

    本文将详细介绍如何使用`Timer`类结合`ServletContextListener`接口来实现在Web应用中启动并管理一个定时任务。 #### 二、Java定时器的基本概念 1. **`java.util.Timer`类**:`Timer`类是Java中用于执行定时任务的...

    java定时器定时调用任务

    在实际应用中,Java定时器还可以与其他技术结合,例如在Servlet环境下。提到的`servlet-timer`可能指的是在Servlet环境中使用定时器的方式。在Servlet容器(如Tomcat)中,可以通过监听器(Listener)或者Servlet的...

    java Timer定时器实例 Spring实例.doc

    通过使用Spring的定时器,我们可以将定时任务集成到Spring应用中,实现更加灵活和强大的任务调度。例如,我们可以利用 `@Scheduled` 注解来定义一个定时任务: ```java import org.springframework.scheduling....

    java定时器

    总结起来,Java定时器在Web应用中的使用通常涉及到创建一个实现了`ServletContextListener`的类,通过监听器来控制定时器的生命周期,以及创建自定义的`TimerTask`子类来定义需要执行的任务。这种设计模式使得定时...

    java_Timer定时器实例_Spring实例

    在构造函数中,它接收了应用的根路径作为参数,并立即调用了`run()`方法,这在实际应用中并不常见,通常我们期望任务由`Timer`调度执行,而不是立即执行。`run()`方法中包含了发送邮件的逻辑,以及一些未完成的...

    Java-Web定时器使用.doc

    Java Web定时器是一种在Web应用程序中定期执行特定任务的机制,它主要依赖于Java的`java.util.Timer`类和`java.util.TimerTask`类。在Java Web开发中,定时任务通常用于后台数据处理、定时备份、日志清理等场景。...

    Java_Web定时器使用

    在Web应用中,经常需要执行一些定期的任务,例如数据同步、日志清理等。为了实现这样的需求,可以利用`java.util.Timer`配合Servlet监听器(`ServletContextListener`)来实现定时任务的自动启动与执行。 ##### 3.2...

Global site tag (gtag.js) - Google Analytics