一. 概述
使用java語言開發應用程序,在windows平台下,一般存在3種應用形式:
1. web應用。web應用多數打成war包在web容器(如tomcat,jetty等)中運行。
2. 桌面應用。桌面應用一般打成jar包或exe文件運行。
3. 后台服務應用。后台服務應用一般打成jar包,然后使用命令行(如java -jar xxx.jar)運行。
二. 什么是windows服務?
Microsoft Windows 服務(即,以前的 NT 服務)使您能夠創建在它們自己的 Windows 會話中可長時間運行的可執行應用程序。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這種服務非常適合在服務器上使用,或任何時候,為了不影響在同一台計算機上工作的其他用戶,需要長時間運行功能時使用。還可以在不同於登錄用戶的特定用戶帳戶或默認計算機帳戶的安全上下文中運行服務。
三. 為什么要讓java程序以服務形式運行?
若使用命令行方式運行java程序,把命令寫成腳本(如bat腳本)運行即可,但命令行方式有其不方便之處,如命令行窗口不能關閉,關閉即停止,因此維護人員容易誤操作(關閉窗口使程序停止);若服務器宕機或其它原因,程序往往無法在服務器重啟時自動啟動。在windows下,很多程序都是以服務的形式運行,這也符合windows的管理。因此,建議使用服務形式運行,操作方便。
四. 如何讓java程序以服務形式運行?
1. Java Service Wrapper目前業界最知名、最成熟的解決方案,添加任何額外的代碼即可使用,不足之處是收費、64位版本需要購買Licence,不過在64位使用32位的也關系不大(除非你的程序需要很大的運算量)。
2. Yet Another Java Service Wrapper類似JSW的開源實現版本,不過官方支持不怎么好。
3. Apache Commons Daemon著名的Apache Commons工具包的成員,按規則添加啟動程序,再編寫腳本實現。
4. 其它的(如WinRun4J,Launch4j)未使用過,更多可參考java開源打包工具。
注意:重點關注使用java service wrapper把java程序作為windows的服務運行,它不需要添加任何代碼,配置即可。
參考:http://blog.csdn.net/masson32/article/details/51802732