一. 概述
使用java語(yǔ)言開發(fā)應(yīng)用程序,在windows平臺(tái)下涛救,一般存在3種應(yīng)用形式:
1.?web應(yīng)用畏邢。web應(yīng)用多數(shù)打成war包在web容器(如tomcat,jetty等)中運(yùn)行。
2.?桌面應(yīng)用检吆。桌面應(yīng)用一般打成jar包或exe文件運(yùn)行舒萎。
3. 后臺(tái)服務(wù)應(yīng)用。后臺(tái)服務(wù)應(yīng)用一般打成jar包蹭沛,然后使用命令行(如java -jar xxx.jar)運(yùn)行臂寝。
二. 什么是windows服務(wù)?
Microsoft Windows 服務(wù)(即摊灭,以前的 NT 服務(wù))使您能夠創(chuàng)建在它們自己的 Windows 會(huì)話中可長(zhǎng)時(shí)間運(yùn)行的可執(zhí)行應(yīng)用程序咆贬。這些服務(wù)可以在計(jì)算機(jī)啟動(dòng)時(shí)自動(dòng)啟動(dòng),可以暫停和重新啟動(dòng)而且不顯示任何用戶界面帚呼。這種服務(wù)非常適合在服務(wù)器上使用掏缎,或任何時(shí)候,為了不影響在同一臺(tái)計(jì)算機(jī)上工作的其他用戶煤杀,需要長(zhǎng)時(shí)間運(yùn)行功能時(shí)使用眷蜈。還可以在不同于登錄用戶的特定用戶帳戶或默認(rèn)計(jì)算機(jī)帳戶的安全上下文中運(yùn)行服務(wù)。
三. 為什么要讓java程序以服務(wù)形式運(yùn)行沈自?
若使用命令行方式運(yùn)行java程序酌儒,把命令寫成腳本(如bat腳本)運(yùn)行即可,但命令行方式有其不方便之處酥泛,如命令行窗口不能關(guān)閉今豆,關(guān)閉即停止嫌拣,因此維護(hù)人員容易誤操作(關(guān)閉窗口使程序停止);若服務(wù)器宕機(jī)或其它原因,程序往往無法在服務(wù)器重啟時(shí)自動(dòng)啟動(dòng)呆躲。在windows下异逐,很多程序都是以服務(wù)的形式運(yùn)行,這也符合windows的管理插掂。因此灰瞻,建議使用服務(wù)形式運(yùn)行,操作方便辅甥。
四.?如何讓java程序以服務(wù)形式運(yùn)行酝润?
1.Java Service Wrapper目前業(yè)界最知名、最成熟的解決方案璃弄,添加任何額外的代碼即可使用要销,不足之處是收費(fèi)、64位版本需要購(gòu)買Licence夏块,不過在64位使用32位的也關(guān)系不大(除非你的程序需要很大的運(yùn)算量)疏咐。
2.Yet Another Java Service Wrapper類似JSW的開源實(shí)現(xiàn)版本,不過官方支持不怎么好脐供。
3.Apache Commons Daemon著名的Apache Commons工具包的成員浑塞,按規(guī)則添加啟動(dòng)程序,再編寫腳本實(shí)現(xiàn)政己。
4.?其它的(如WinRun4J酌壕,Launch4j)未使用過,更多可參考java開源打包工具歇由。
注意:重點(diǎn)關(guān)注使用java service wrapper把java程序作為windows的服務(wù)運(yùn)行卵牍,它不需要添加任何代碼,配置即可印蓖。