用途:使用Spring Boot開發(fā)的Web項(xiàng)目,打包生成了一個(gè)jar包,部署在Windows服務(wù)器中,設(shè)置為開機(jī)啟動(dòng)
其它失敗方案:
1、Spring Boot生成的jar包,可以直接用java -jar運(yùn)行,但是前提是需要登錄用戶,而且注銷用戶后會(huì)退出程序,所以不可用。
2、使用計(jì)劃任務(wù),寫一個(gè)bat處理文件,里面寫java -jar運(yùn)行程序,然后把bat文件作為一個(gè)計(jì)劃任務(wù)運(yùn)行;結(jié)果可能是因?yàn)槿蝿?wù)啟動(dòng)時(shí),系統(tǒng)資源未準(zhǔn)備好,所以沒有成功。
最佳方案:使用winsw,winsw是一個(gè)開源項(xiàng)目,程序以及源碼可以在Git Hub下載:
https://github.com/kohsuke/winsw/releases
winsw是一個(gè)可以將任何應(yīng)用程序注冊成服務(wù)的軟件,使用方法如下:
1、將Git Hub中下載的WinSW.NET4.exe和sample-minimal.xml文件及springboot項(xiàng)目的jar包放在同一個(gè)文件夾中。

2、需要將winsw執(zhí)行程序跟xml改成同樣的名字,推薦使用項(xiàng)目名+Service的命名方式,比如:WinSW.NET4.exe改成myProjectService.exe,sample-minmal.xml改成myProjectService.xml。

3、編輯myProjectService.xml文件,內(nèi)容如下
<configuration>
<!--安裝成Windows服務(wù)后的服務(wù)名-->
<id>myProjectServiceID</id>
<!--顯示的服務(wù)名稱-->
<name>myProjectServiceName</name>
<!--對(duì)服務(wù)的描述-->
<description>此處可填寫該服務(wù)的描述</description>
<!--這里寫java的路徑,如何配置了環(huán)境變量直接寫"java"就行-->
<executable>java</executable>
<!--Xmx256m 代表堆內(nèi)存最大值為256MB -jar后面的是項(xiàng)目名-->
<arguments>-Xmx256m -jar myProject.jar</arguments>
<!--日志模式-->
<logmode>rotate</logmode>
</configuration>
4、打開系統(tǒng)服務(wù)功能:運(yùn)行——輸入cmd,然后進(jìn)入到myProjectService.exe所在文件夾,然后執(zhí)行命令安裝服務(wù)命令:myProjectService.exe install。

5、命令提示符界面輸入命令“net start myProjectServiceName”啟動(dòng)服務(wù)。

6、打開系統(tǒng)服務(wù)功能:運(yùn)行——輸入services.msc,即可看見自己命名的服務(wù)myProjectServiceName。

7、測試 :重啟電腦后該服務(wù)會(huì)自動(dòng)啟動(dòng),執(zhí)行第6步可檢查是否成功。
8、刪除服務(wù)分為兩步:1停止服務(wù);2刪除服務(wù),都是在命令行界面實(shí)現(xiàn)。
命令提示符界面輸入命令"net stop myProjectServiceName"停止運(yùn)行服務(wù)。

命令提示符界面輸入命令"myProjectService.exe uninstall"可刪除服務(wù)

9.上面所有的命令都可以寫在批處理文件中,部署的時(shí)候就可以實(shí)現(xiàn)一鍵部署了。
例如myProjectStart.bat內(nèi)容如下:
myProjectService.exe install
net start myProjectServiceName
例如myProjectStop.bat內(nèi)容如下:
net stop myProjectServiceName
myProjectService.exe uninstall
10.如果沒有成功可以查看日志找原因,日志文件在同級(jí)目錄:

最后,本文如有疏忽錯(cuò)誤,請指教