2008-09-16 32 views
2

我的僱主只是讓我在他們運行的Java EE WebSphere應用程序中運行定時批處理。它應該每天晚上11點30分開始上課。Java EE中的定時批處理有哪些工具?

我不是很熟悉Java EE和WebSphere服務器(或者tomcat,在開發環境中),而且我一直在挖掘,但是我發現的所有東西都是關於java定時器類的,但不是如何設置它或調用它。

看起來也需要編輯web.xml文件。

任何幫助將不勝感激!

回答

5

你應該看OpenSymphony的開源Quartz library。非常容易使用和完美的這種事情。

TimerTasks最適合將來在短時間內運行某些東西。但是對於像這樣的大規模時間內重複執行,Quartz非常擅長。您甚至可以將即將到來的任務列表保存在持久性存儲中,例如文件或數據庫,因此即使重新啓動應用程序,即將到來的定時作業也不會丟失。

另外,Spring框架中Quartz有一個很好的抽象。

0

在你的web.xml中,你可以配置一個servlet在啓動時加載。
語法:

<的servlet的servlet-name = '你好' 的servlet類= 'test.HelloWorld' >
<時加載的啓動/ >
</servlet的>

做到這一點,然後在servlet的init方法中,你可以設置一個Timer/TimerTask來完成你需要做的任何事情。 TimerTasks就像Threads,除非你可以安排它們運行的​​時間。

0

Quartz是標準JBoss 4.2.x發行版的一部分。

這是一個非常好的圖書館,沒有太多的工作,你也可以定義簡單的工作流程。

0

在WebSphere中不支持調度。

如果你在UNIX上,你可以使用crontab來安排一個請求到你的websphere應用程序的頁面。我想在Windows上也可以安排一個請求到一個頁面。在我的crontab我在8:45

45 8,每天安排一個網頁的請求* * *每天早上myBatch的servlet調用GET http://www.domain.com/myBatch?securitykey=verysecret

現在起,我可以做任何需要在做那時。爲了避免其他人打電話給這個頁面並開始批處理,我添加了securitykey參數。

+0

是啊,你經常把它添加到列出HTTP訪問每個日誌文件......真的,verysecret ... – 2008-09-18 20:34:42

+0

它運行在我自己的服務器上,我是唯一一個看到日誌文件的人。這只是爲了確保其他人不會開始我的批處理。我想在這裏指出的一點是,你可以使用crontab來調用一個servlet。按照您認爲必要的方式保護它。爲我完美工作。 – boes 2008-09-24 22:49:59

1

EJB 3.1將改進計時器服務以及應用程序生命週期掛鉤,以消除在無用戶交互的情況下使用servlet啓動任務的需要。

這可能會回答問題標題,但是對於遺留應用程序(寫於6個月前以前)編寫的「真正」問題;)在websphere上運行時,我建議使用啓動servlet和EJB定時器服務。

Timer Service in J2EE 1.4 (EJB 2.1)

對於EJB 3.0(和3.1儘快提供),也有一些很好的註釋;)

我不介紹另一個library,除非你真的需要它。計時器服務應該足夠每天執行任意工作。

HTH,
馬丁