实现 接口 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>
分享到:
相关推荐
它可以是简单的定时器,也可以是根据特定日期或事件触发的复杂规则。 3. **Scheduler**:调度器负责管理和执行Jobs,它根据Triggers安排Job的运行时间,并确保Job在合适的时间被正确执行。 4. **Calendar**:日历...
Quartz的Hibernate模型 博文链接:https://xmkevinchen.iteye.com/blog/196392
2. **EJB 3.2**:进一步简化了EJB,添加了轻量级的定时器服务和事件处理。 3. **WebSocket API**:引入了双向通信协议,允许实时数据传输,适用于聊天、游戏和流媒体应用。 4. **JPA 2.1**:提供了更多的查询语言...
J2EE容器,如应用服务器,提供了运行和管理EJB、Servlet、JSP等组件的环境,并提供了诸如连接池、定时器服务、工作调度等功能。 13. **部署描述符** 部署描述符(如web.xml、ejb-jar.xml)定义了应用的配置信息,...
同时,Swing还提供了定时器(Timer)组件,可用于实现游戏的计时和动画效果。 总的来说,Swing组件在J2EE开发中扮演着重要的角色,它提供了构建用户界面所需的各种工具,使得开发者能够专注于业务逻辑,而不是底层...
3. **EJB 3.1**:Enterprise JavaBeans 3.1的改进使得EJB更加轻量,支持无状态会话bean的注解配置,以及定时器服务,增强了可移植性。 4. **JPA 2.0**:Java Persistence API的升级版提供了更好的ORM(Object-...
17. **JS计时器**:`setTimeout()`用于设定延迟执行的代码,`clearTimeout()`用于取消定时器;`setInterval()`用于周期性执行代码,`clearInterval()`用于停止周期执行。 18. **JS消息框**:`window.alert()`用于...
Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...
- **定时器服务**:允许Bean在预设时间执行任务。 - **本地异步方法**:让EJB可以异步处理请求,提高系统响应速度。 **2. JSF 2.0 (JavaServer Faces)** JSF 2.0带来了页面导航、组件模型和生命周期的重大改进: - ...
此外,还支持定时器服务和Asynchronous方法调用,提高了性能和灵活性。 4. **Java Persistence API(JPA)2.0**:JPA是ORM(对象关系映射)的标准,2.0版本增强了对多对多关联的支持,添加了查询语言JPA QL,以及...
EJB 3.1在J2EE 6中显著降低了使用门槛,通过注解简化了组件的声明,引入了轻量级会话bean和无状态会话bean,以及定时器服务。 5. **Java Persistence API (JPA)**:JPA提供了一种统一的方式来管理关系数据库中的...
- **集成方式**:Quartz可以在应用中启动或运行,也可以作为一个独立的应用(带有RMI接口),或在一个J2EE应用服务器中运行,并作为其他J2EE组件的一种引用资源。 7. **与Java定时器的区别**: - **持久化**:...
开发者可以利用MIDP的Game API来创建游戏,这个API提供了图形绘制、声音播放、定时器等功能。同时,为了优化性能,理解低级别硬件交互和内存管理也是必要的。 总的来说,J2EE和J2ME虽然现在可能不如其他现代技术如...
11. **Enterprise JavaBeans(EJB)3.1**:EJB 3.1大幅简化了编程模型,引入了无状态会话bean的轻量级使用,以及定时器服务和本地bean的注解支持。 12. **Faces(JSF)2.0**:JavaServer Faces 2.0改进了用户界面...
同时,结合定时器(`setInterval()`)和数组索引,可以实现自动轮播。 2. **Flash切换**:尽管Flash在现代Web开发中的使用逐渐减少,但在一些场合仍需处理Flash内容。jQuery可以通过改变元素的`innerHTML`或使用`...
本文将深入探讨三种在J2EE环境中实现任务调度的方式:Java内置的定时器API(java.util.Timer)、Servlet容器的定时任务以及第三方库Quartz。 ### 1. Java内置定时器API Java标准库提供了`java.util.Timer`类和`...
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。本系统结合通过 Spring 来...