使用winsw將springboot打包的jar注冊系統本地服務


1、下載winsw

下載地址:https://github.com/kohsuke/winsw/releases

我這里下載的是2.3.0版。

 

下載sample-minimal.xml和WinSW.NET4.exe兩個文件。

 

2、將三個文件放在同一個文件夾中

WinSW.NET4.exe

sample-minimal.xml

springboot jar包

 

3、修改文件名字

需要將winsw執行程序跟xml改成同樣的名字,推薦使用項目名+Service的命名方式,比如:

WinSW.NET4.exe修改為rexel-middleware-0.0.1.exe

sample-minmal.xml修改為rexel-middleware-0.0.1.xml

 

4、編輯xml文件

 

 配置內容

<configuration>
  <!--安裝成Windows服務后的服務名-->
  <id>rexel-middleware</id>
  <!--顯示的服務名稱-->
  <name>rexel-middleware</name>
  <!--對服務的描述-->
  <description>rexel-middleware for hzzg project</description>
  <!--這里寫java的路徑,如何配置了環境變量直接寫"java"就行-->
  <executable>java</executable>
  <!---jar后面的是項目名,可以配置內存限制如-Xmx256m代表堆內存最大值為256MB -->
  <arguments>-jar rexel-middleware-0.0.1.jar</arguments>
  <!--日志模式-->
  <logmode>rotate</logmode>
</configuration>

 

5、執行命令安裝服務

打開系統命令行窗口,進入到rexel-middleware-0.0.1.exe所在文件夾,

然后執行命令安裝服務命令:rexel-middleware-0.0.1.exe install。

執行發現報錯如下:

 

錯誤日志:

D:\MyWork\22_Github\rexel-cn\rexel-jarvis\rexel-middleware\install>rexel-middleware-0.0.1.exe install
2019-12-02 10:25:24,938 INFO  - Installing the service with id 'myapp'
2019-12-02 10:25:24,964 FATAL - WMI Operation failure: AccessDenied
WMI.WmiException: AccessDenied
   在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result)
   在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args)
   在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor)
   在 winsw.WrapperService.Main(String[] args)
WMI.WmiException: AccessDenied
   在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result)
   在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args)
   在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor)
   在 winsw.WrapperService.Main(String[] args)

 

解決方法:

使用管理員權限重新打開cmd窗口,重新執行rexel-middleware-0.0.1.exe install

  

6、啟動服務

命令提示符界面輸入命令啟動服務。

命令:net start rexel-middleware

 

7、查看是否啟動成功

打開系統服務功能:運行——輸入services.msc

即可看見自己命名的服務rexel-middleware。

 

我的java程序是一個從外部接口定時拉取數據,並寫入到mysql的程序,

可以看到已經在開始寫入數據了,證明程序運行成功。

  

8、重啟測試

重啟電腦后該服務會自動啟動,執行第6步(net start rexel-middleware)可檢查是否成功。

 

9、刪除服務

分為兩步:

步驟1:停止服務

命令提示符界面輸入命令停止運行服務:net stop rexel-middleware

步驟2:刪除服務

命令提示符界面輸入命令可刪除服務:rexel-middleware-0.0.1.exe uninstall

  

10、修改為批處理文件

上面所有的命令都可以寫在批處理文件中,部署的時候就可以實現一鍵部署了。

例如start.bat內容如下:

rexel-middleware-0.0.1.exe install
net start rexel-middleware

  

例如stop.bat內容如下:

net stop rexel-middleware
rexel-middleware-0.0.1.exe uninstall

 

--END--


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM