天天看點

Apache Commons Daemon簡介翻譯

英文原文位址:

http://commons.apache.org/daemon/

 從1994年以來java已經發展為一個有效的開發工具,不僅僅是applets和用戶端應用程式,還有可靠穩定的伺服器端程式。JAva平台的主要的缺點當今還是依靠一個單一的入口點:( the public static void  main(String[]) )來啟動Java應用程式。使用單點入口對于用戶端程式是一個有效的解決方案,一個使用者可以互動地使用指令來退出應用程式(它可以調用System.exit(int)方法來中斷虛拟機程序),但是在非互動式的應用程式下,例如伺服器端程式,目前沒有有效的方法通知虛拟機即将臨近的關機。一個Java編寫的伺服器程式在能關閉虛拟機程序之前必須執行一些任務,例如一個servlet容器,在VM程序關閉之前,會話需要序列化到磁盤,web應用程式需要銷毀。對于這個問題的一般解決方法是建立一個ServerSocket,接收釋出的特定消息。當接收到資訊,伺服器程式執行關閉所有需要關閉的操作,最後調用System.exit方法退出虛拟機。然而,這種方法有一定的不利和風險,例如系統範圍的關機,虛拟機程序會被作業系統直接關閉,而不會通知正在運作的伺服器程式。或者,如果一個攻擊這發現了發送到伺服器需要的資訊,使用一種方法把這樣的資訊發送給正在運作的伺服器,他能輕易地中斷一個伺服器的操作,繞過了在作業系統上應用的安全限制。大多數多使用者作業系統已經有啟動和停止伺服器程式的方法,在unix下非互動的伺服器程式稱為“daemons”,作業系統使用一套特定的信号控制它。在Windows下,這樣的程式稱為“服務”,通過調用定義在程式中特定的函數來控制它。雖然這些處理問題的方法不同,兩種情況下,作業系統都能通知伺服器程式即将到來的關機,應用程式能夠在程序被銷毀之前執行特定的任務。

Daemon包含兩部分. 一個是用C編寫的到作業系統的接口,另一個是用Java編寫的Daemon API。

實際上win32和類UNIX平台都支援,win32平台使用procrun,類UNIX平台使用jsvc。

最初的Java classes來自Jakarta Tomcat 4.0項目。

Daemon元件推薦的包名稱為 org.apache.commons.daemon 。