2011-08-15 90 views
0

我在javascript中有一个网页,主要是有一个导出到excel函数。我该如何安排一项任务在我的Tomcat服务器上每X小时运行一次?

如何安排该功能运行并保存在该服务器上的每隔2小时的文件夹中?

+1

excel保存在服务器上? – sternr

+0

@sternr是的是 – code511788465541441

+0

[jsp web应用程序中的后台计时器任务]的可能重复(http://stackoverflow.com/questions/5357033/background-timer-task-in-jsp-web-application) – BalusC

回答

1

由于这听起来像是你已经建立的一切,只是想将其自动化,这里是一个想法:

  • 建立一个Quartz作业运行每2个小时。 Example here
  • 使用Rhino在JVM中运行JavaScript。 Example here。 OTOH,你可以将你的JS代码翻译成Java,然后直接在没有Rhino的情况下运行它。
  • 取出JS方法的输出并将其保存到服务器。

大概有十亿其他方式来做到这一点...

0

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

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

我想创建一个warpper类不仅会创造一个TimerTask,但管理它\它们(如果例如定时器应创建每个用户或用户要求配置)

1
new Timer().schedule(new TimerTask(){ 
     @Override 
     public void run() 
     { 
     //export Excel here 
     } 
    }, 0, 1000*60*60*2); 
0

一个简单的方法做的就是使用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

相关问题