`
songlei8090
  • 浏览: 39294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2EE项目中后台定时运行的程序

    博客分类:
  • J2EE
阅读更多

在开发J2EE项目中,有时候需要在后台定时执行一些代码。比如定时对web数据建立倒排索引、定时发送邮件、定时写日志文件。下面将这几段代码总结出来,以备以后使用。

  首先需要继承TimerTask类,覆盖run()方法,将需要定时执行的业务代码写在这个run()方法中:

import java.util.Date;

  import java.util.TimerTask;

  public class DisplayDate extends TimerTask {

  @Override

  public void run() {

  // TODO Auto-generated method stub

  try {

  System.out.println(new Date());//定时打印当前时间

  } catch (Exception e) {

  // TODO: handle exception

  e.printStackTrace();

  }

  }

  }

 然后需要另外一个类实现ServletContextListener 接口,这个接口能够监听web应用的生命周期。当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent事件的两个方法:

  contextInitialized(ServletContextEvent sce) :当Servlet 容器启动Web 应用时调用该方法。在调用完该方法之后,容器再对Filter 初始化,并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。

  contextDestroyed(ServletContextEvent sce) :当Servlet 容器终止Web 应用时调用该方法。在调用该方法之前,容器会先销毁所有的Servlet 和Filter 过滤器。

[java]

  import java.util.Timer;

  import javax.servlet.ServletContextEvent;

  import javax.servlet.ServletContextListener;

  public class AutoRun implements ServletContextListener {

  private Timer timer = null;

  public void contextInitialized(ServletContextEvent arg0) {

  // TODO Auto-generated method stub

  timer=new Timer(true);

  timer.schedule(new DisplayDate(),0,1000*3);//延迟0秒,每3秒执行一次DisplayDate()

  }

  public void contextDestroyed(ServletContextEvent arg0) {

  // TODO Auto-generated method stub

  timer.cancel();

  }

  }

 最后就是在web.xml文件中配置,使得该监听器起作用:

[html]

  <listener>

  <listener-class>com.hh.autorun.AutoRun</listener-class>

  </listener>

 完成以上步骤以后,当你启动服务器软件,如tomcat,后台就会定时运行任务了。

分享到:
评论

相关推荐

    j2ee中使用线程的小DEMO

    2. **后台任务**:在业务逻辑中,有时我们需要在后台执行一些长时间运行的任务,比如定时任务、数据同步等。这时,我们可以创建新的线程来执行这些任务,避免阻塞主线程,保持应用的响应性。 3. **线程池管理**:在...

    监控平台(J2EE)声音告警程序功能设计与实现

    在本文中,我们将探讨如何在J2EE监控平台上设计和实现声音告警程序,这是一个用于监控定时任务、主机批处理运行、主机实时交易信息以及主机状态的综合性平台。平台的后台数据抓取部分由C语言实现,而前端展示、分析...

    基于J2EE技术的新闻发布系统的开发与应用

    4. **j2sdk1.4**:这是Java 2 Standard Edition的第4个版本,提供了开发和运行Java应用程序所需的运行时环境和开发工具,包括Java编译器和JVM(Java Virtual Machine)。 在实际开发中,基于J2EE的新闻发布系统通常...

    EL4J, an Extension Library for the J2EE-开源

    在J2EE应用中,常有一些后台任务需要持续运行,如定时任务、监控或数据清理等。守护程序管理器提供了对这些后台任务的统一管理和调度,确保它们能够稳定、可靠地运行,同时减少了因资源管理不当导致的问题。 此外,...

    Quartz调度学习笔记

    Quartz 是一个强大的任务调度框架,由 OpenSymphony 开源组织开发,主要目的是提供一个用于在 Java 应用程序中安排任务执行的解决方案。Quartz 支持与 J2EE 和 J2SE 平台的无缝集成,允许开发者在各种类型的项目中...

    Android系统中的广播(Broadcast)机制简要介绍和学习计划

    在Android应用程序的设计中,广播机制通常用于解决以下场景: 1. 异步通信:例如,后台Service可以通过广播将结果发送到前台Activity,而无需两者之间有直接的依赖关系。 2. 系统事件通知:系统广播如电池电量低、...

    Quartz Job Scheduling Framework第11章翻译初稿

    Quartz Job Scheduling Framework是一个广泛使用的开源任务调度框架,它允许开发者在Java应用程序中安排复杂的作业执行。在第11章的翻译初稿中,我们可能会深入探讨Quartz的核心概念、设计模式以及如何在实际项目中...

    Google Android SDK开发范例大全(完整版)

    擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse、Netbeans开发工具,积累多年大型项目开发、跨系统整合经验。 目录 第1...

    maximo入门培训

    后台任务开发涵盖了计划任务和定时任务的配置和实现。Maximo支持通过调度器来安排这些任务,它们可以在不干扰用户交互的情况下运行。这包括数据库清理、报告生成、数据同步等操作。开发者需要理解如何配置界面以...

    2021-2022计算机二级等级考试试题及答案No.9278.docx

    这是因为`Timer`对象主要用于后台执行定时任务,而不是用于用户界面显示。 **正确答案:** B (`Timer`) ### 16. 列表框动态添加数据的方法 在编程中,`additem`方法通常用于向列表框中动态添加数据项。这种方法...

    ActiveMQ快速上手 PDF

    - **基本概念**:JMS(Java Message Service)是一种与平台无关的 API,用于在两个应用程序之间,或分布式系统中的组件之间进行消息交换。 - **消息结构**:消息包含头部(Header)、属性(Properties)和体(Body)...

    JBPM工作流

    这意味着,理论上,JBPM可以运行在任何Hibernate支持的数据库之上,并且能够部署在任何符合J2EE规范的应用服务器中。 #### 二、第一个流程 ##### 2.1 开始前的准备 在开始之前,需要准备JBPM的相关环境和工具。...

    SHELL编程讲义

    SHELL不仅是一个交互式解释器,还可以用来编写具有复杂逻辑的脚本程序。这篇讲义将深入探讨SHELL编程的基础知识和高级技巧。 **一、SHELL基础** 1. **SHELL类型**:常见的SHELL类型有Bash(Bourne-Again SHell)、...

Global site tag (gtag.js) - Google Analytics