我的僱主只是讓我在他們運行的Java EE WebSphere應用程序中運行定時批處理。它應該每天晚上11點30分開始上課。Java EE中的定時批處理有哪些工具?
我不是很熟悉Java EE和WebSphere服務器(或者tomcat,在開發環境中),而且我一直在挖掘,但是我發現的所有東西都是關於java定時器類的,但不是如何設置它或調用它。
看起來也需要編輯web.xml文件。
任何幫助將不勝感激!
我的僱主只是讓我在他們運行的Java EE WebSphere應用程序中運行定時批處理。它應該每天晚上11點30分開始上課。Java EE中的定時批處理有哪些工具?
我不是很熟悉Java EE和WebSphere服務器(或者tomcat,在開發環境中),而且我一直在挖掘,但是我發現的所有東西都是關於java定時器類的,但不是如何設置它或調用它。
看起來也需要編輯web.xml文件。
任何幫助將不勝感激!
你應該看OpenSymphony的開源Quartz library。非常容易使用和完美的這種事情。
TimerTasks最適合將來在短時間內運行某些東西。但是對於像這樣的大規模時間內重複執行,Quartz非常擅長。您甚至可以將即將到來的任務列表保存在持久性存儲中,例如文件或數據庫,因此即使重新啓動應用程序,即將到來的定時作業也不會丟失。
另外,Spring框架中Quartz有一個很好的抽象。
在你的web.xml中,你可以配置一個servlet在啓動時加載。
語法:
<的servlet的servlet-name = '你好' 的servlet類= 'test.HelloWorld' >
<時加載的啓動/ >
</servlet的>
做到這一點,然後在servlet的init方法中,你可以設置一個Timer/TimerTask來完成你需要做的任何事情。 TimerTasks就像Threads,除非你可以安排它們運行的時間。
Quartz是標準JBoss 4.2.x發行版的一部分。
這是一個非常好的圖書館,沒有太多的工作,你也可以定義簡單的工作流程。
在WebSphere中不支持調度。
如果你在UNIX上,你可以使用crontab來安排一個請求到你的websphere應用程序的頁面。我想在Windows上也可以安排一個請求到一個頁面。在我的crontab我在8:45
45 8,每天安排一個網頁的請求* * *每天早上myBatch的servlet調用GET http://www.domain.com/myBatch?securitykey=verysecret
現在起,我可以做任何需要在做那時。爲了避免其他人打電話給這個頁面並開始批處理,我添加了securitykey參數。
EJB 3.1將改進計時器服務以及應用程序生命週期掛鉤,以消除在無用戶交互的情況下使用servlet啓動任務的需要。
這可能會回答問題標題,但是對於遺留應用程序(寫於6個月前以前)編寫的「真正」問題;)在websphere上運行時,我建議使用啓動servlet和EJB定時器服務。
Timer Service in J2EE 1.4 (EJB 2.1)
對於EJB 3.0(和3.1儘快提供),也有一些很好的註釋;)
我不介紹另一個library,除非你真的需要它。計時器服務應該足夠每天執行任意工作。
HTH,
馬丁
在WebSphere中,你可以使用計劃程序服務觸發方法的執行Java類。 調度提供調度的工作(類似的cron)執行日曆或者你可以開發自己。
下面就來介紹在調度的網頁的鏈接WAS 6.1文檔:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp
是啊,你經常把它添加到列出HTTP訪問每個日誌文件......真的,verysecret ... – 2008-09-18 20:34:42
它運行在我自己的服務器上,我是唯一一個看到日誌文件的人。這只是爲了確保其他人不會開始我的批處理。我想在這裏指出的一點是,你可以使用crontab來調用一個servlet。按照您認爲必要的方式保護它。爲我完美工作。 – boes 2008-09-24 22:49:59