跳转至

Windows + systemctl

Windows 服務用 WinSW (Windows Service Wrapper)

下載 WinSW

https://github.com/winsw/winsw/releases 下載 WinSW-x64.exe 將 WinSW-x64.exe 重命名為 MyService.exe

目錄結構

C:\MyApp\
├── MyService.exe       (WinSW 執行檔)
├── MyService.xml       (配置文件)
├── MyApp.jar           (你的 JAR 檔)

Spring Boot 應用專用配置

<service>
  <!-- 服務的唯一識別符 (不要有空格) -->
  <id>MyApp</id>

  <!-- 在 Windows 服務列表中顯示的名稱 -->
  <name>MyApp</name>

  <!-- 服務的描述 -->
  <description>MyApp</description>

  <!-- Java 執行檔的完整路徑 -->
  <executable>C:\Program Files\Java\jdk-21\bin\java.exe</executable>

  <!-- Java 啟動參數 -->
  <arguments>
    -Xmx1024m 
    -Xms512m 
    -Dserver.port=8081
    -jar "D:\MyApp\MyApp.jar"
  </arguments>

  <!-- 工作目錄:JAR 檔所在的目錄 -->
  <workingdirectory>D:\MyApp</workingdirectory>

  <!-- 日誌設定 -->
  <logpath>D:\MyApp\logs\</logpath>
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>  <!-- 10MB -->
    <keepFiles>8</keepFiles>
  </log>

  <!-- 服務啟動模式 -->
  <startmode>Automatic</startmode>

  <!-- 失敗後自動重啟 -->
  <onfailure action="restart" delay="15 sec"/>

  <delayedAutoStart>true</delayedAutoStart>

  <!-- 重置失敗計數器 -->
  <resetfailure>1 day</resetfailure>
</service>

管理服務

MyService.exe install    # 安裝
MyService.exe start      # 啟動
MyService.exe stop       # 停止
MyService.exe restart    # 重啟
MyService.exe status     # 查看狀態
MyService.exe uninstall  # 卸載