2017年9月8日 星期五

【J2EE】如何設計「Server要固定執行的工作」:ServletContextListener、Timer和TimerTask

ServletContextListener是種生命週期監視器。

寫好以後要在web.xml中用「<listener><listener-class>[ServletContextListener實作物件]</listener-class></listener>這組標籤完成設定。

裏頭主要有兩組介面, 「contextDestroyed(ServletContextEvent arg0)」和「contextInitialized(ServletContextEvent arg0)」,前者會在Server關閉或重開時被呼叫執行,後者則是啟動時被呼叫執行。


一般來說,要設定「Server要固定執行的工作」,要先使用這組功能在Server啟動時設定Timer的Schedule。

TimerTask就好像是「工作」的內容,Timer就是固定執行的時段,使用ServletContextListener就是將這兩者啟動並結合。(似乎也可以用一般Request的方式啟動,程式功能上完全沒問題。)


 Timer物件宣告方式很簡單。TimerTask是個抽象介面,但就是個Runnable。

 兩者都取得宣告後,Timer有組函數「schedule(TimerTask arg0, Date arg1, long arg2)」和「schedule(TimerTask arg0, long arg1, long arg2)」,這分別可以設定「TimerTask」(要執行的工作內容)、「Date」(具體啟動的日期),還有「距離現在多少毫秒後啟動」和「多少毫秒後重複執行」。

(「距離現在多少毫秒後啟動」又被稱為「DelayTime」。)

沒有留言:

張貼留言