將java應用註冊成Windows服務
將java應用程序jar註冊成windows服務隨機自啓動,不再需要命令窗口打開,避免誤操作。以springboot爲例。
首先準備好一個完整的springboot項目,我們修改pom.xml文件,將其打包成jar
使用eclipse打包,右擊項目名,選擇 Run as > Maven build...
輸入Goals爲package,選擇跳過測試Skip Tests,然後run
結束後在項目目錄target下可找到jar
打包的工具有很多種,這裏主要介紹winsw,其他方式如直接使用sc命令sc create 這種方式註冊的服務往往會啓動報錯,另一種方式是使用procrun,此方法對於一般的jar包好使,但是springboot打包成jar後
與普通jar不同,class文件在BOOT-INF下,註冊完啓動後會class not found,解決方法參考文章:
https://www.2cto.com/kf/201801/714529.html 還是有些麻煩,且我想把所有的文件都打包入jar,故換方法,最終選擇winsw註冊
winsw是一款可將可執行程序安裝成Windows Service的開源工具,github:https://github.com/kohsuke/winsw/releases
使用方法也很簡單,只需要必須的exe和一個xml配置文件即可,我們選擇下載WinSW.NET4.exe,兩個配置文件可以下載下來用於參考
首先創建文件夾RZSpider,將打包好的jar改名爲RZSpider.jar,將剛剛下載好的winsw更名爲RZSpider.exe一起復制進去,創建一個xml文件RZSpider.xml用於配置註冊信息,再創建兩個bat文件用於安裝和卸載服務,創建一個bin文件夾用於存放啓動停止服務的bat文件,後兩項可以不創建。
springboot需要的文件資源config和lib以及resources
接下來書寫xml配置,配置信息如下
<configuration>
<id>RZSpiderService</id>
<name>RZSpiderService</name>
<description>This is RZSpider service.</description>
<executable>java</executable>
<arguments>-jar RZSpider.jar</arguments>
<!-- 開機啓動 -->
<startmode>Automatic</startmode>
<!-- 日誌配置 -->
<logpath>logs/service</logpath>
<logmode>rotate</logmode>
</configuration>
id爲任務管理器中服務名,配置開啓自啓動以及日誌目錄,最簡配置即可,配置好之後實際上就可以註冊服務了,我們在RZSpider目錄下按住shift同時右擊鼠標選擇在此處打開命令窗口,輸入RZSpider.exe install即可安裝服務,輸入RZSpider.exe uninstall即卸載服務,同樣啓動停止重啓即,start ,stop ,restart。
爲了方便起見,我們將命令寫入bat文件,這樣直接雙擊即可完成相同命令,RZSpider目錄下注冊和卸載服務的bat文件內容簡單如下
把命令集合放入bin目錄
注意bin目錄下bat命令要使用相對目錄
..\RZSpider.exe start
註冊成功
啓動,查看日誌
訪問一下
成功。