如何让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
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:
全部回答
- 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("上一次任务执行还未结束");
// }
// }
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯