2011-08-15 91 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

相關問題