SpringBoot Windows 自啟動 - 透過 Windows Service 服務實現

VipSoft發表於2023-03-27

SpringBoot 在Windows執行時,有個黑窗體,容易被不小心選中或關閉,或者伺服器重啟後,不能自動執行,註冊為 Windows Service服務 可實現 SpringBoot 專案在Windows 中隨系統自啟動。也不用擔心被關閉

下載 WinSW

https://github.com/winsw/winsw/releases

image

建立執行目錄

建立目錄,將有關檔案放入目錄下,
將 WinSW-x64.exe 重新命名為 自己的服務名,如 his-service.exe
如下圖:
image
his-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<service>
  <!-- 服務ID Windows 服務唯一標識 -->
  <id>his-service</id>
  <!-- 服務名稱 -->
  <name>his-service</name>
  <!-- 服務描述 -->
  <description>HIS 介面同步服務</description>
  <!-- jar包執行引數,如果沒設JAVA_HOME,指定執行程式的jdk位置 C:\Program Files\Java\jdk1.8.0_251\bin\java.exe-->
  <executable>java</executable>
  <!-- -jar之後是jar包名稱 -->
  <arguments>  -Xms1024m -Xmx2048m -Dfile.encoding=utf-8  -Dloader.path=D:\HisApi-lib -jar his-service.jar  --server.port=22586 --spring.profiles.active=dev </arguments>
  <!-- 日誌配置 -->
  <logpath>D:\HIS\logs</logpath>
  <!-- 日誌模式,預設為append追加模型,rotate為旋轉模式-->
  <logmode>rotate</logmode>
</service>
  • executable:啟動可執行檔案的全路徑,如果配置環境變數,則可以簡寫,所有這裡填寫Java
  • arguments:命令執行的引數
  • logpath:配置日誌路徑
  • logmode:日誌輸出模式,預設為append,官方文件
  • append:(追加模式,其特點是將日誌檔案全部輸出在一個檔案中,這個檔案可能會越來越大。
  • rotate:(旋轉模式,推薦)當日志檔案大小達到10兆(預設值),winsw會將日誌重新輸出到另外一份日誌檔案,最多保留8個(預設值)。
  • reset:(重置模式)每次重啟服務都會重置日誌檔案。
  • none:(忽略模式)幾乎不會生成日誌檔案。

安裝服務

CMD(管理員模式)
D:\HIS>his-service.exe install
D:\HIS>services.msc 安裝成功後到 服務中,找到對應的服務,右擊啟動
image

更新服務

  • 停止服務
  • 替換目錄下的jar檔案
  • 啟動服務

刪除服務

D:\HIS>sc delete his-service

注意

his-service 替換成自己的應用服務名


同類產品有:NSSM 使用介紹:
NSSM 將.NetCore 做成 Windows 服務 - JAVA 同理
NSSM 將jar包安裝為windows服務-bat啟動方式

感謝,@yi念之間 提供 NSSM 資訊

相關文章