Tomcat+Sevrlet实现定时任务

1.准备一个Tomcat,一个servlet的jar包。我用的是apache-tomcat-8.5.51和servlet-api.jar

2.在eclipse里面新建一个工程,编写要定时执行的任务,MyTask.java是要执行的任务,TaskListener.java是一个监听器

3.MyTask.java代码如下

package com.test.cn;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class MyTask extends TimerTask  {

    @Override
    public void run() {
        
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
        String time = sdf.format(d);
        
        System.out.println("定时扫描监听器程序开始执行时间:" + time);
        
    }

}

4.TaskListener.java代码如下

package com.test.cn;

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

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

public class TaskListener implements ServletContextListener {
    
    private Timer timer = null; 

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        
        System.out.println("定时器启动");
        
        try {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, 20); // 控制时,24小时制
            calendar.set(Calendar.MINUTE, 59);  // 控制分
            calendar.set(Calendar.SECOND, 0);  // 控制秒
                        
            Date time = calendar.getTime(); // 执行任务的时间,可自行修改,此时为12:00:00

            timer = new Timer(true);
            
            //参数1:需要执行的类,参数2:执行时间,参数3:执行周期(参数可自行修改)
            //默认执行MyTask类下的run()方法;
            timer.scheduleAtFixedRate(new MyTask(), time, 1000*5);  //隔一天(周期性)扫描执行方法,
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

}

5.打开apache-tomcat-8.5.51的目录,进入到E:\apache-tomcat-8.5.51\webapps下面,新建一个自己的Web应用,如下

 6.应用下面建一个名称为WEB-INF文件夹(注意,名称一定要为WEB-INF)

 7.WEB-INF文件夹下的文件如下,classes放的是你的源代码编译之后的class文件,lib里面放的是所需要的jar包,这里简单的任务放servlet-api.jar就好了,如果用到其他的,需要加进来,web.xml是配置文件

 8.web.xml的内容如下,其中com.test.cn.TaskListener为你的监听器那个类的全名

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">
  
    <listener>
        <listener-class>com.test.cn.TaskListener</listener-class>
    </listener>

</web-app>

9.工作已经做完了,进入E:\apache-tomcat-8.5.51\bin目录下,双击startup.bat将服务跑起来,可以看到定时任务已经执行起来了

 

 

 

 

Tips:

如果Tomcat运行的时候报端口被占用错误,将E:\apache-tomcat-8.5.51\conf目录下的server.xml改一下即可,换个端口

 

posted @ 2020-08-20 21:54  不夹心饼干  阅读(1364)  评论(0编辑  收藏  举报