如何在tomcat服务器上安排一个任务每X小时运行一次?

How can I schedule a task to run every X hours on my tomcat server?

本文关键字:任务 小时 一次 运行 一个 tomcat 服务器      更新时间:2023-09-26

我有一个网页在javascript主要有一个导出到excel功能。

例如,我如何安排该函数每2小时运行并保存在服务器上的特定文件夹中?

因为这听起来像是你已经构建了所有的东西,只是想让它自动化,这里有一个想法:

  • 设置每2小时运行一次Quartz作业。例子
  • 使用Rhino在JVM中运行JavaScript。例子。OTOH,你可以将JS代码翻译成Java,然后在没有Rhino的情况下本地运行。
  • 获取JS方法的输出并将其保存到服务器。
   new Timer().schedule(new TimerTask(){
      @Override
      public void run()
      {
        //export Excel here
      }
    }, 0, 1000*60*60*2);

如果您希望调度由客户端控制,那么您可以使用元刷新标记或简单的settimeout js调用。

如果你想在服务器上控制调度,你可以在服务器上创建一个TimerTask。

我会创建一个warpper类,不仅会创建TimerTask,但管理它'他们(如果例如一个计时器应该创建每个用户或处置的用户请求)

一个简单的方法是使用Timer.scheduleAtFixedRate()方法。这是在您出于某种原因不想导入任何第三方库的情况下。不过,其中一些还是相当不错的!

Timer timer = new Timer("TEST", true);
timer.scheduleAtFixedRate(new TestTimer(), INITIAL_DELAY, INTERVAL_PERIOD);

在这里你定义了你的TestTimer (TestTimer扩展了TimerTask)来导出Excel, INITIAL_DELAY是它应该第一次触发的时间,INTERVAL_PERIOD是它应该再次尝试导出到Excel的时间。见https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html