永发信息网

如何让tomcat启动时执行某一方法

答案:2  悬赏:60  手机版
解决时间 2021-01-24 15:58
  • 提问者网友:几叶到寒
  • 2021-01-24 13:02
如何让tomcat启动时执行某一方法
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-01-24 14:17
import java.util.Timer;

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

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

  public void contextInitialized(ServletContextEvent event) {
    timer = new Timer(true);
    timer.schedule(new TestTimer(), 0, 86400000);//milliseconds
  }

  public void contextDestroyed(ServletContextEvent event) {
    timer.cancel();
  }
}

------------------------------------------

import java.util.TimerTask;

public class TestTimer extends TimerTask {
  public void run() {
    // do something ...
  }
}

------------------------------------------

web.xml:


test.TestListener
全部回答
  • 1楼网友:鸽屿
  • 2021-01-24 15:54
java有个listener! 随tomcat启动而调用自己写的方法!也可以循环调用!就是每过几小时掉用自己的方法web.xml com.function.syscontextlistener syscontextlistener.javapackage com.function;import java.util.timer;//定时器类 import javax.servlet.servletcontextevent; import javax.servlet.servletcontextlistener; public class syscontextlistener implements servletcontextlistener { private timer timer = null; public void contextinitialized(servletcontextevent event) {//在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能 timer = new timer(true); system.out.println("启动成功"); event.getservletcontext().log("定时器已启动--------------------------------------------------");//添加日志,可在tomcat日志中查看到 // timer.schedule(new exporthistorybean(event.getservletcontext(),dealdate.gettime()),0,5*1000);//调用exporthistorybean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时。 event.getservletcontext().log("已经添加任务--------------------------------------------------"); } public void contextdestroyed(servletcontextevent event) {//在这里关闭监听器,所以在这里销毁定时器。 timer.cancel(); event.getservletcontext().log("定时器销毁--------------------------------------------------"); } } exporthistorybean.javapackage com.function; import java.util.calendar; import java.util.timertask; import javax.servlet.servletcontext; public class exporthistorybean extends timertask { private static final int c_schedule_hour = 0; private static boolean isrunning = false; private servletcontext context = null; public exporthistorybean(servletcontext context) { this.context = context; } public void run() { calendar c = calendar.getinstance(); //if(!isrunning) // { // if(c_schedule_hour == c.get(calendar.hour_of_day)) // { isrunning = true; context.log("开始执行指定任务--------------------------------------------------"); int day = calendar.getinstance().get(calendar.day_of_month); new webservicebean().dowork();//这里就是调用自己的方法了 isrunning = false; context.log("指定任务执行结束--------------------------------------------------"); // } // else // { // context.log("上一次任务执行还未结束"); // } // } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯