`

J2EE 定时器

阅读更多

实现 接口 ServletContextListener
实现 方法 public void contextInitialized(ServletContextEvent sce)
        方法 public void contextDestroyed(ServletContextEvent sce)

参考代码:

package OOS.Travian.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import OOS.Travian.BO.OOS;

public class MainServlet extends HttpServlet implements ServletContextListener {

    private Timer timer = null;
    private Calendar cal=Calendar.getInstance();

    public void contextInitialized(ServletContextEvent arg0) {
        timer = new java.util.Timer(true);
        System.out.println(cal.getTime()+"定时器已启动");
        timer.schedule(new OOS(), 0, 60 * 1000);
        System.out.println(cal.getTime()+"已经添加任务调度表");
       
    }

    public void contextDestroyed(ServletContextEvent arg0) {

        timer.cancel();
        System.out.println(cal.getTime()+"定时器销毁");

    }

}


其中利用了定时器的java.util.Timer.schedule(TimerTask task, long delay, long period)方法,里面的参数依次为:任务类,延时(单位毫秒),周期(单位毫秒)。根据我的设定,每分钟执行一次

然后是业务逻辑类:

package OOS.Travian.BO;

import java.util.TimerTask;


public class OOS extends TimerTask{

    private static boolean isRunning = false;

    public void run() {
        if (!isRunning) {
            isRunning = true;
            System.out.println("开始执行指定任务");
            /* 业务代码 */
            isRunning = false;
            System.out.println("指定任务执行结束");
        } else {
            System.out.println("上一次任务执行还未结束");
        }
    }
   
}


最后是配置侦听器:
在web.xml中添加以下代码,当然Servlet名要换成真实的。


<listener>
<listener-class>OOS.Travian.Servlet.MainServlet</listener-class>
</listener>
分享到:
评论

相关推荐

    Quartz/J2EE (定时服务)

    它可以是简单的定时器,也可以是根据特定日期或事件触发的复杂规则。 3. **Scheduler**:调度器负责管理和执行Jobs,它根据Triggers安排Job的运行时间,并确保Job在合适的时间被正确执行。 4. **Calendar**:日历...

    [Quartz]Quartz定时器的j2ee系统使用

    Quartz的Hibernate模型 博文链接:https://xmkevinchen.iteye.com/blog/196392

    J2EE-API-7和J2EE-API-6中英文对照版

    2. **EJB 3.2**:进一步简化了EJB,添加了轻量级的定时器服务和事件处理。 3. **WebSocket API**:引入了双向通信协议,允许实时数据传输,适用于聊天、游戏和流媒体应用。 4. **JPA 2.1**:提供了更多的查询语言...

    j2ee原理

    J2EE容器,如应用服务器,提供了运行和管理EJB、Servlet、JSP等组件的环境,并提供了诸如连接池、定时器服务、工作调度等功能。 13. **部署描述符** 部署描述符(如web.xml、ejb-jar.xml)定义了应用的配置信息,...

    j2ee的应用-swing组件介绍

    同时,Swing还提供了定时器(Timer)组件,可用于实现游戏的计时和动画效果。 总的来说,Swing组件在J2EE开发中扮演着重要的角色,它提供了构建用户界面所需的各种工具,使得开发者能够专注于业务逻辑,而不是底层...

    J2EE_API_6

    3. **EJB 3.1**:Enterprise JavaBeans 3.1的改进使得EJB更加轻量,支持无状态会话bean的注解配置,以及定时器服务,增强了可移植性。 4. **JPA 2.0**:Java Persistence API的升级版提供了更好的ORM(Object-...

    j2ee面试题及答案全

    17. **JS计时器**:`setTimeout()`用于设定延迟执行的代码,`clearTimeout()`用于取消定时器;`setInterval()`用于周期性执行代码,`clearInterval()`用于停止周期执行。 18. **JS消息框**:`window.alert()`用于...

    Quartz定时器从入门到进阶

    Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...

    J2EE6 API 学习文档

    - **定时器服务**:允许Bean在预设时间执行任务。 - **本地异步方法**:让EJB可以异步处理请求,提高系统响应速度。 **2. JSF 2.0 (JavaServer Faces)** JSF 2.0带来了页面导航、组件模型和生命周期的重大改进: - ...

    j2ee6-javaEE6文档 手册 CHM

    此外,还支持定时器服务和Asynchronous方法调用,提高了性能和灵活性。 4. **Java Persistence API(JPA)2.0**:JPA是ORM(对象关系映射)的标准,2.0版本增强了对多对多关联的支持,添加了查询语言JPA QL,以及...

    J2EE_6_API英文版

    EJB 3.1在J2EE 6中显著降低了使用门槛,通过注解简化了组件的声明,引入了轻量级会话bean和无状态会话bean,以及定时器服务。 5. **Java Persistence API (JPA)**:JPA提供了一种统一的方式来管理关系数据库中的...

    quartz 定时器

    - **集成方式**:Quartz可以在应用中启动或运行,也可以作为一个独立的应用(带有RMI接口),或在一个J2EE应用服务器中运行,并作为其他J2EE组件的一种引用资源。 7. **与Java定时器的区别**: - **持久化**:...

    J2EE的基础知识

    开发者可以利用MIDP的Game API来创建游戏,这个API提供了图形绘制、声音播放、定时器等功能。同时,为了优化性能,理解低级别硬件交互和内存管理也是必要的。 总的来说,J2EE和J2ME虽然现在可能不如其他现代技术如...

    J2EE api_6

    11. **Enterprise JavaBeans(EJB)3.1**:EJB 3.1大幅简化了编程模型,引入了无状态会话bean的轻量级使用,以及定时器服务和本地bean的注解支持。 12. **Faces(JSF)2.0**:JavaServer Faces 2.0改进了用户界面...

    jquery实现的j2ee网页的特效

    同时,结合定时器(`setInterval()`)和数组索引,可以实现自动轮播。 2. **Flash切换**:尽管Flash在现代Web开发中的使用逐渐减少,但在一些场合仍需处理Flash内容。jQuery可以通过改变元素的`innerHTML`或使用`...

    总结J2EE中使用任务调度三种方式

    本文将深入探讨三种在J2EE环境中实现任务调度的方式:Java内置的定时器API(java.util.Timer)、Servlet容器的定时任务以及第三方库Quartz。 ### 1. Java内置定时器API Java标准库提供了`java.util.Timer`类和`...

    spring 定时器

    Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。本系统结合通过 Spring 来...

Global site tag (gtag.js) - Google Analytics