WinSW配置Java應用為Windows系統服務

苍凉温暖發表於2024-07-12

目錄
  • WinSW介紹
  • 安裝
  • 配置
  • 使用

WinSW介紹

WinSW的全稱是Windows Service Wrapper,可以將應用打包成Windows服務的方式執行。
WinSW 3 可在安裝了 .NET Framework 4.6.1 或更高版本的 Windows 平臺上執行。 對於沒有 .NET Framework 的系統,該專案提供基於 .NET 7 的本地 64 位和 32 位可執行檔案。

  1. 專案地址:https://github.com/winsw/winsw
  2. 最新發行版下載地址:https://github.com/winsw/winsw/releases
  3. 注:請選擇 Latest 版本下載
  4. 需要下載的檔案
    • 配置檔案:二選一
      • 全部配置:sample-allOptions.xml
      • 精簡配置:sample-minimal.xml
    • 執行檔案:根據作業系統位數,一般都是x64了
      • WinSW-x64.exe

安裝

  1. 一組WinSW(一個配置+一個執行檔案)只能提供一個應用的服務能力。
  2. 將下載好的配置檔案和可執行檔案放置到jar包同級目錄下。
  3. 將配置檔案和可執行檔案改名和jar包同名。(非必要但是建議)
  4. 使用文字編輯器編輯配置檔案(.xml),詳細配置如下。

配置

所有的配置內容需要在<service></service>標籤內進行配置,修改的配置會在下一次服務啟動時生效

  1. 核心配置:
    1. 系統服務ID:<id>
      標籤內配置的字串需要是系統服務中的唯一值
    2. 系統服務名稱:<name>
      顯示在系統服務管理頁面的服務名稱
    3. 服務備註:<description>
      系統服務管理中對此服務的備註
    4. 可執行應用:<executable>
      此處配置是應用的執行檔案,比如java服務就是配置java即可(前提是配了環境變數)
    5. 啟動引數:<arguments>
      此處配置應用的啟動引數,比如 -jar D:\xxx.jar
    6. 服務啟動模式:<startmode>
      服務在系統啟動時自啟還是手動啟動,一般設定自啟:Automatic,前提是依賴服務都配置了,比如mysql、redis之類的
    7. WinSW日誌模式:<log mode="none"/>
      這裡設定的是不列印日誌,因為如果不設定的話,WinSW會把控制檯日誌一股腦全到列印到一個叫做 服務名.log 的日誌檔案中
    8. WinSW日誌位置:<logpath>
      這裡的日誌是WinSW的服務日誌,不是應用的內部日誌,隨便設定一個位置即可,不設定的話會生成在執行同目錄下
  2. 其他配置:
    詳見:https://github.com/winsw/winsw/blob/v3/docs/xml-config-file.md
  3. 日誌更多引數:
    詳見:https://github.com/winsw/winsw/blob/v3/docs/logging-and-error-reporting.md
  4. 示例
    <service>
      <id>TEST-Server</id>
      <name>測試服務</name>
      <description>這是一個測試服務</description>
      <executable>java</executable>
      <arguments>-Dfile.encoding=utf-8 -jar D:\test.jar</arguments> 
      <startmode>Automatic</startmode>
      <log mode="none"/>
      <logpath>D:\test\logs</logpath>
    </service>
    

使用

  1. 透過可執行檔案對服務進行安裝、啟動、停止、解除安裝
  2. 命令方式:xxx.exe <Command>
  3. Command
    • 安裝服務:install
    • 啟動服務:start
    • 停止服務:stop
    • 重啟服務:restart
    • 服務狀態:status
    • 解除安裝服務:uninstall
  4. 進階使用方式詳見:https://github.com/winsw/winsw/blob/v3/docs/cli-commands.md

相關文章