`

Java Web定时任务

    博客分类:
  • java
阅读更多
在工程的WEB-INF\web.xml配置文件中加入如下三行,所计划的任务就会在Web容器(或服务器)启动时自动开始执行了:
<listener>
<listener-class>com.xxh.autoTask.ProjectServletContextListner</listener-class>
</listener>

ProjectServletContextListner.java
package com.xxh.autoTask;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ProjectServletContextListner implements ServletContextListener {

//定时器
private static java.util.Timer timer = null;


//此方法仅在关闭Web容器(或服务器)时被调用一次
public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
timer.cancel();
event.getServletContext().log("定时器已销毁,任务执行结束");
}

//此方法仅在起动Web容器(或服务器)时被调用一次
public void contextInitialized(ServletContextEvent event) {
// TODO Auto-generated method stub
timer = new java.util.Timer(true);
javax.servlet.ServletContext ctx = event.getServletContext();
ctx.log("定时器已启动,任务开始执行");
/*
//如果是用web.xml文件配置参数,则用下面的方式读取参数设置值
long period = Long.valueOf((String)ctx.getInitParameter("period")).longValue();
*/

timer.schedule(new NewTask(), // 所需要执行的任务
0, // 延迟时间(0 --- 表示起动Web容器(或服务器)就立即执行此任务)
30*1000 // 任务的执行间隔时间[单位:毫秒] (此处的间隔时间是30秒)
);
}

}


CustomTask.java
package com.xxh.autoTask;

public interface CustomTask {

/**
* 用于实现自定义的任务
*/
public void execute();

}

CustomTask.java
package com.xxh.autoTask;

public class MyTask implements CustomTask {

public void execute() {
// TODO Auto-generated method stub
System.out.println("在此方法中实现任务的主体");
}

}


NewTask.java
package com.xxh.autoTask;

import java.util.TimerTask;

public class NewTask extends TimerTask {

private static boolean isRunning = false; //运行标志(表示是否正在运行计划的任务)
private static int t = 3;
private CustomTask ct = TaskFactory.getTask();

@Override
public void run() {
// TODO Auto-generated method stub
if(!isRunning){ //当未执行此任务时则开始执行
if(ct != null){
isRunning = true; //将任务执行标志设置为正在执行
ct.execute(); //执行任务
isRunning = false; //将任务执行标志设置为执行完毕
}else{
if(t == 0) return;
t--;
System.out.println();
System.out.println("[Error] [com.xxh.autoTask.NewTask] The task is null.");
System.out.println("[Error] [com.xxh.autoTask.NewTask] The task is null.");
System.out.println("[Error] [com.xxh.autoTask.NewTask] The task is null.");
}
}else{
System.out.println("The task is running.");
}

}

}


TaskFactory.java
package com.xxh.autoTask;

public class TaskFactory {

/**
* 功能:返回实现了CustomTask接口的类的实例对象
*
*
* 例: 如果实现了CustomTask接口的类名是MyTask,
* return new MyTask();
* 如上这样就可以了.
*/
public static CustomTask getTask(){
return new MyTask();
}

}


分享到:
评论

相关推荐

    java web定时任务 实例

    Java Web定时任务是Web应用程序中实现周期性操作的关键技术,例如数据备份、清理过期记录、发送邮件通知等。在本实例中,我们将探讨如何在Java Web环境中设置和执行定时任务,以及涉及到的相关技术和工具。 首先,...

    java轻松实现—定时任务

    总结来说,Java实现定时任务有多种方法,其中在Web应用中使用监听器和`TimerTask`是一种常见的方式。这种方式易于理解和实现,但可能不适合复杂的定时需求。对于更复杂的需求,可以考虑使用`...

    在Java Web项目中添加定时任务的方法

    在Java Web项目中添加定时任务的方法 在 Java Web 程序中加入定时任务是非常重要的,通常我们需要在特定的时间点执行某些任务,以实现自动化操作。这里介绍两种方法来实现定时任务:使用监听器注入和使用 Spring ...

    java定时任务,每天定时执行任务

    Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能...

    java定时任务的实现方式

    在Web项目中,可以通过页面上的按钮触发定时任务的启动,通过表单提交到对应的Servlet或Action。 如果想要实现每日定时执行,只需要调整`timer.schedule`方法的第三个参数,将其改为1000*60*60*24,即一天的毫秒数...

    Spring定时任务实现(非Web项目)

    在Spring框架中,定时任务是通过Spring的Task模块来实现的,这使得在非Web项目中也能方便地进行定时任务的调度。以下是对这个主题的详细讲解。 首先,我们需要了解Spring Task的核心组件: 1. **...

    java web使用监听器实现定时周期性执行任务demo

    在这个"java web使用监听器实现定时周期性执行任务demo"中,我们将探讨如何利用Java的Servlet监听器(Listener)和定时任务API来达到这个目标。 首先,我们要了解Java中的监听器。在Java Web应用程序中,监听器是...

    java定时器定时调用任务

    在Servlet容器(如Tomcat)中,可以通过监听器(Listener)或者Servlet的初始化方法来创建和启动定时器,以实现在Web应用启动后自动开始执行定时任务。 此外,Java 5引入了`java.util.concurrent`包,其中的`...

    Quartz 定时任务web使用

    Quartz 是一个开源的作业调度框架,常用于Java应用程序中实现定时任务的管理。它提供了丰富的API和功能,使得开发者可以灵活地定义和控制任务的执行。本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的...

    Java Web实现添加定时任务的方法示例

    在Java Web开发中,添加定时任务是常见的需求,例如用于数据同步、日志清理、统计分析等场景。本文将详细讲解如何在Java Web环境中实现定时任务,并通过一个具体的示例来展示其实现过程。 首先,我们需要创建一个...

    Java定时执行任务的三种方法

    本文将详细介绍Java中三种常见的定时任务实现方式:`java.util.Timer`、`ServletContextListener`以及Spring框架中的`ScheduledTimerTask`。 1. **java.util.Timer** `java.util.Timer`类是最基础的定时任务工具,...

    java定时任务

    "java定时任务" java定时任务是指在java程序中,使用Timer和TimerTask来实现的定时执行任务的机制。java提供了多种方式来实现定时任务,包括使用java.util.Timer和java.util.TimerTask类、使用java.lang.Thread类的...

    java scheduler 定时demo

    2. **Spring Scheduler**: 在Java Web应用中,Spring框架提供了`org.springframework.scheduling`模块,简化了定时任务的配置和管理。通过`@Scheduled`注解,可以直接在方法上声明一个定时任务,或者通过`Task...

    JAVA项目服务器启动时自启动指定的Servlet,并定时执行任务

    在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...

    spring动态配置定时任务

    此外,为了便于管理,你可以创建一个Web界面,允许用户通过界面来增删改定时任务的配置,这样就实现了对定时任务的可视化管理。 总结起来,Spring动态配置定时任务的关键在于:1) 使用`@Scheduled`或`TaskScheduler...

    Spring定时任务(Web项目)

    Spring框架提供了强大的定时任务支持,使得在Web项目中实现这类功能变得简单易行。本案例将详细介绍如何利用Spring技术来实现定时任务,并提供相关的代码示例。 一、Spring定时任务简介 Spring框架的定时任务功能...

    Tomcat的定时任务(计时器)

    本文将深入探讨如何在Tomcat中实现定时任务,主要涉及的知识点包括Java的定时器(Timer)和Spring框架的TaskScheduler。 首先,让我们了解一下Java中的定时任务。在Java标准库中,有一个名为`java.util.Timer`的类...

Global site tag (gtag.js) - Google Analytics