java web每天定时执行任务

第一步:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

package com.eh.util;

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

/**

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

 * @author wls

 *

 */

public class TimerManager {

    //时间间隔

     private static final long PERIOD_DAY = 24 60 60 1000;

     public TimerManager() {

          Calendar calendar = Calendar.getInstance(); 

                

          /*** 定制每日2:00执行方法 ***/

          calendar.set(Calendar.HOUR_OF_DAY, 16);

          calendar.set(Calendar.MINUTE, 10);

          calendar.set(Calendar.SECOND, 0);

          

          Date date=calendar.getTime(); //第一次执行定时任务的时间

          System.out.println(date);

          System.out.println("before 方法比较:"+date.before(new Date()));

          //如果第一次执行定时任务的时间 小于 当前的时间

          //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准

          if (date.before(new Date())) {

              date = this.addDay(date, 1);

              System.out.println(date);

          }

          

          Timer timer = new Timer();

          

          NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();

          //安排指定的任务在指定的时间开始进行重复的固定延迟执行。

          timer.schedule(task,date,PERIOD_DAY);

         }

         // 增加或减少天数

         public Date addDay(Date date, int num) {

          Calendar startDT = Calendar.getInstance();

          startDT.setTime(date);

          startDT.add(Calendar.DAY_OF_MONTH, num);

          return startDT.getTime();

         }

}

第二步:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

package com.eh.util;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.TimerTask;

/**

 * 在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后

 *发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况

 *发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。

 * @author wls

 *

 */

public class NFDFlightDataTimerTask extends TimerTask {

    private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override

    public void run() {

        try {

             //在这里写你要执行的内容

            System.out.println("执行当前时间"+formatter.format(Calendar.getInstance().getTime()));

        catch (Exception e) {

            System.out.println("-------------解析信息发生异常--------------");

        }

    }

    

}

第三步:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package com.eh.util;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class NFDFlightDataTaskListener implements  ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {

         new TimerManager();

    }

    public void contextDestroyed(ServletContextEvent sce) {

        // TODO Auto-generated method stub

        

    }

}

第四步:配置web.xml文件


1

2

3

4

<!--NFDFlightDataTaskListener 监听器-->

<listener>

    <listener-class>com.eh.util.NFDFlightDataTaskListener</listener-class>

</listener>

时间: 2024-07-30 01:18:35

java web每天定时执行任务的相关文章

Java实现每天定时执行任务

1.TimerManager类 package com.lyz.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * java定时任务,每天定时执行任务 * @author liuyazhuang * */ public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60

Java Web项目启动执行顺序

一. 1.启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点. 2.接着,容器创建一个ServletContext(servlet上下文),这个web项目的所有部分都讲共享这个上下文 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二. load-on-startup 元素在w

java web启动后执行初始化任务

写一个类继承ApplicationListener,可以直接引用下述代码,然后调用相应的方法. package com.linewell.system; import com.linewell.cache.ApplicationData; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org

JNLP(Java Web Start )(转)

JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序. Java桌面应用程序以JNLP 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点. JNLP文件具体说明编辑 <?xml version="1.0" encoding="UTF-8&q

Java Web应用启动间隔执行的程序

Reference:<Java定时器timer.schedule在Web中间隔执行任务和定时><[Java]Timer和TimerTask详解> 做了一个Demo,完成如下的功能: 让Tomcat在WEB程序启动的时候启动一个线程池和一个Timer线程,Timer线程每隔一段时间跑一次(比如检查到期的用户,类似轮询查看),然后触发另一个后台线程(甩给线程池去处理,比如处理到期的用户,发送等). 直接用代码说话 StarupListener.java package Listener

Java 在某一个时间点定时执行任务(转载)

java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行方法 ***/ calendar.set(Calendar.HOUR_OF_DA

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

java定时任务,每天定时执行任务. public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行方法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 2); calend

JAVA定时执行任务,每天定时几点钟执行任务

JAVA定时执行任务,每天定时几点钟执行任务的示例如下: 1.建立TimerManage类,设置时间点,时间点设置的管理类,代码如下: 1 package com.pcitc.time; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 7 public class TimerManager { 8 9 //时间间隔 10 private static final long PE

【java web】java执行预编译Groovy脚本

在JVM中运行Groovy类有两种方式: 使用Groovy编译所有的*.groovy为java的*.class文件,把这些*.class文件放在java类路径中,通过java类加载器来加载这些类. 通过groovy类加载器在运行时直接加载*.groovy文件并生成对象.在这种方式下,没有生成任何*.class,但是生成了一个java.lang.Class对象的实例. 下面介绍前一种使用Groovy的方法:编译成java字节码并且作为正常java应用程序运行在java虚拟机上,即预编译模式. 1.