java在servlet里设置个定时器,让其在tomcat一运行时,自动每隔几个小时执行一个任务?

task 我已经写好,问题是怎么配置servlet定时器?需要监听吗?

看你要求 如果复杂的定时 可以使用 定时框架 quartz,如果简单的定时可以使用

package test;
import java.util.Timer;
public class TimeTaskTest {
   public static void main(String[] args){

      Timer timer = new Timer(); 
      timer.schedule(new Task(), 60 * 1000);
    }
}


package test;
import java.util.TimerTask;
public class Task extends TimerTask {

   public void run()
  {
    System.out.println("定时任务执行");
  }

}追问

我的需求很简单,就是每隔24小时,清空hashmap,但我的是个网站,需要放在服务器上,我每次运行,都要运行个main方法吗?又没有随着项目一起启动的方法?

追答

你可以定义一个 监听器来在项目启动的时候 执行他

在 web.xml中配置

<listener>
    <listener-class>com.init.InitData</listener-class>
  </listener>public class InitData implements ServletContextListener{

@Override
public void contextDestroyed(ServletContextEvent arg0) {
// web停止时执行
}

@Override
public void contextInitialized(ServletContextEvent arg0) {
//web å¯åŠ¨æ—¶æ‰§è¡Œ
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-24
首先你写一个类去实现 implements ServletContextListener 即Servlet监听器
当Servlet容器创建的时候会执行,也就是说你的tomcat一启动就会执行一次contextInitialized(ServletContextEvent event);
写好这个类以后,要web.xml里做一下配置

<listener>
<listener-class>这里用你的这个类的包名加类名</listener-class>
</listener>
第2个回答  2018-04-08

    如果是简单的烂代码,写个死循环,获取当前时间,如果时间到了你想要的时候就执行你想要执行的方法。

    如果要写的好点。起一个线程,线程里给个死循环,获取当前时间,如果为你想要的时间,就另外起一个线程跑你要的程序,如果不是则当前线程睡30秒或者1分钟什么的。

代码如下:

    public class Task1

    {public static void main(String[] args) {

    // run in a second

    final long timeInterval = 1000;

    Runnable runnable = new Runnable() {

    public void run() {

    while (true) {

    // ------- code for task to run

    System.out.println("Hello !!");

    // ------- ends here

    try {

    Thread.sleep(timeInterval);

    } catch (InterruptedException e) {

    e.printStackTrace();
    }
    }
    }
    };

    Thread thread = new Thread(runnable);

    thread.start();
    }
    }

本回答被网友采纳
第3个回答  2015-02-07
在linstener 中写个定时器,随服务器启动,而已,再不会私密我,10分钟帮你搞定本回答被提问者采纳

java中在定时器,定时每周一定时执行某个任务,必须在周一重新启动了服务...
Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。

在javaweb当中,servlet在运行阶段,针对每个客户端的请求,都会创建一个...
更多的配置参见官方文档。如果有时间,会写一个Tomcat具体如何实现请求队列及它的处理文章。请求响应 更友好的体验还要从客户端出发来考虑,如果你能缩短请求的处理时间,客户端体验是极好的,比如成都访问杭州阿里云服务器,空载来回大概40ms的时间,如果你的服务处理控制在10ms以内,请求在50ms就可以返回,...

java程序里运行tomcat启动的时候就执行某个类里的方法
数字越大加载顺序越靠后。这样在tomcat启动时会调用servlet的init方法。可以在init方法中初始化公用资源信息等等 。希望对你有帮助。

怎样在Web工程中实现任务计划调度?
由于系统核心基于Web部署,报表计算引擎在Tomcat上运行,使用Windows任务计划较为复杂。考虑在Web上实现,使用Java定时器(java.util.Timer)配置定时触发计划任务。在Web工程启动时自动加载运行定时器,使其存活期覆盖整个工程生命期。结合Servlet上下文的侦听器(javax.servlet.ServletContextListener)实现此功能。

java程序里运行tomcat启动的时候就执行某个类里的方法
tomcat启动时会自动加载配置文件中所有的java文件,包括web.xml, applicationContext.xml,struts.xml等,以及servlet和filter, 然后进行初始化,所以,在servlet的初始化init()方法中调用service()方法即可

TOMCAT启动是多线程的,可以一边自动执行一个servlet类,一边执行系统项 ...
我的建议是,把那部分单独拿出来做一个model,然后在servlet中调用该model。当你访问以上servlet的时候Tomcat的web container会生成一个http thread来handle这个 request。当需要执行那个model,如果是EJB的话会通知EJB Container去生成一个thread去 执行该model,然后原来的http thread会被suspend,当Model执行...

我用Myeclipse开发web项目,服务器用的是tomcat时,域名访问老是访问不...
<!--1、在web.xml配置监听器ContextLoaderListener--> <!--ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。 在ContextLoaderListener中关联了ContextLoader这个类,所以整个...

java 怎么配置servlet?
大体分2个步骤):第一步:在Tomcat根目录下的webapps目录下创建如下目录,并且放相应的文件:• \/FirstWebApp • \/FirstWebApp\/WEB-INF\/classes:存放servlet类编译后的.class文件 • \/FirstWebApp\/WEB-INF\/web.xml:存放servlet的配置文件 第二步:配置web.xml文件,如下图:...

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程...
Servlet是一种遵循Servlet规范开发的Java类,运行在服务器端,由服务器调用。Servlet技术由Sun公司提供,适合实现网络上的聊天、发帖等交互功能。使用Servlet的原因在于,普通的Java技术难以完成这些功能。HTTP协议是互联网上应用最广泛的网络协议,所有WWW文件都必须遵守。它是一种客户端与服务器交互的通信格式...

tomcat 启动完成后,怎么自动执行我的类
写一个servlet,在init()方法中写好想要执行的程序,程序如下:eclipse新建一个web\\Dynamic Web Project , name = myweb1 , 把tomcat中的 servlet-api.jar复制到lib中,新建一个类MyServlet.Java, 继承 javax.servlet.HttpServlet,代码如下:[java] view plain copy package org.cai;import javax....

相似回答