在开发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,后台就会定时运行任务了。
相关推荐
2. **后台任务**:在业务逻辑中,有时我们需要在后台执行一些长时间运行的任务,比如定时任务、数据同步等。这时,我们可以创建新的线程来执行这些任务,避免阻塞主线程,保持应用的响应性。 3. **线程池管理**:在...
在本文中,我们将探讨如何在J2EE监控平台上设计和实现声音告警程序,这是一个用于监控定时任务、主机批处理运行、主机实时交易信息以及主机状态的综合性平台。平台的后台数据抓取部分由C语言实现,而前端展示、分析...
4. **j2sdk1.4**:这是Java 2 Standard Edition的第4个版本,提供了开发和运行Java应用程序所需的运行时环境和开发工具,包括Java编译器和JVM(Java Virtual Machine)。 在实际开发中,基于J2EE的新闻发布系统通常...
在J2EE应用中,常有一些后台任务需要持续运行,如定时任务、监控或数据清理等。守护程序管理器提供了对这些后台任务的统一管理和调度,确保它们能够稳定、可靠地运行,同时减少了因资源管理不当导致的问题。 此外,...
Quartz 是一个强大的任务调度框架,由 OpenSymphony 开源组织开发,主要目的是提供一个用于在 Java 应用程序中安排任务执行的解决方案。Quartz 支持与 J2EE 和 J2SE 平台的无缝集成,允许开发者在各种类型的项目中...
在Android应用程序的设计中,广播机制通常用于解决以下场景: 1. 异步通信:例如,后台Service可以通过广播将结果发送到前台Activity,而无需两者之间有直接的依赖关系。 2. 系统事件通知:系统广播如电池电量低、...
Quartz Job Scheduling Framework是一个广泛使用的开源任务调度框架,它允许开发者在Java应用程序中安排复杂的作业执行。在第11章的翻译初稿中,我们可能会深入探讨Quartz的核心概念、设计模式以及如何在实际项目中...
擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse、Netbeans开发工具,积累多年大型项目开发、跨系统整合经验。 目录 第1...
后台任务开发涵盖了计划任务和定时任务的配置和实现。Maximo支持通过调度器来安排这些任务,它们可以在不干扰用户交互的情况下运行。这包括数据库清理、报告生成、数据同步等操作。开发者需要理解如何配置界面以...
这是因为`Timer`对象主要用于后台执行定时任务,而不是用于用户界面显示。 **正确答案:** B (`Timer`) ### 16. 列表框动态添加数据的方法 在编程中,`additem`方法通常用于向列表框中动态添加数据项。这种方法...
- **基本概念**:JMS(Java Message Service)是一种与平台无关的 API,用于在两个应用程序之间,或分布式系统中的组件之间进行消息交换。 - **消息结构**:消息包含头部(Header)、属性(Properties)和体(Body)...
这意味着,理论上,JBPM可以运行在任何Hibernate支持的数据库之上,并且能够部署在任何符合J2EE规范的应用服务器中。 #### 二、第一个流程 ##### 2.1 开始前的准备 在开始之前,需要准备JBPM的相关环境和工具。...
SHELL不仅是一个交互式解释器,还可以用来编写具有复杂逻辑的脚本程序。这篇讲义将深入探讨SHELL编程的基础知识和高级技巧。 **一、SHELL基础** 1. **SHELL类型**:常见的SHELL类型有Bash(Bourne-Again SHell)、...