將jar包配置為windows服務


一、為什么要這么做?

在windows的服務器中,通過打開一個cmd窗口,執行java --jar xxxx.jar的方式,每一個cmd窗口,相當於一個臨時session會話,當cmd窗口關閉之后,啟動的java程序就停止了。

為了避免這種情況的發生,需要將執行jar包,以后台進程的方式執行jar包,類似linux服務器,以nohup java -jar xxx.jar的方式。

二、使用WinSW將jar包做成windows服務

2.1 實現步驟

1、下載WinSW 64位:https://github.com/winsw/winsw/releases

2、將下載的WinSW.NET4.exe文件復制到jar程序所在文件夾中(我的jar包是research.jar)

3、將WinSW.NET4.exe重命名為research.exe(和jar同名)

4、在同目錄下新建一個xml文件,命名為research.xml,寫入以下內容

<service>
     <id>research</id>
     <name>research</name>
     <description>research</description>
     <env name="JAVA_HOME" value="%JAVA_HOME%"/>
     <executable>java</executable>
     <arguments>-jar "C:\Users\lyr\Desktop\test\research.jar"</arguments>
     <startmode>Automatic</startmode>
     <logpath>D:logs\log</logpath>
     <logmode>rotate</logmode>
 </service>

5、xml補充說明

id,name,description我都寫成了和jar包相同的名稱

arguments:-jar后面寫上自己jar包的路徑

logpath:log文件路徑

6、運行:以管理員運行cmd進入jar所在的目錄,然后執行research.exe install

C:\Users\lyr\Desktop\test>research.exe install
Installing service 'research (research)'...
Service 'research (research)' was installed successfully.

7、出現上圖的"Service 'research (research)' was installed successfully",表示服務安裝成功,然后去Windows服務里面啟動服務(服務名稱是research)

2.2 卸載已經安裝的服務

以管理員運行cmd進入jar所在的目錄,然后執行research.exe uninstall

2.3 評價

確實能運行項目,也能在自定義的log路徑看到log執行日志

不方便的地方:每次修改一個地方的代碼,都得停止服務,更新jar包,然后再啟動服務。

2.4 可能遇到的問題

部署之后,服務啟動不成功

解決方法一:對服務,右鍵選擇屬性,選擇登錄,勾選允許服務與桌面交互

解決方法二:使用全新的WinSW-x64.exe再設置一遍服務。

三、一個比較傻的方法(不推薦)

下面的源碼得放在bat文件(可以先寫在txt文件,然后改為bat后綴)

評價:點擊確實可以運行服務,但是在任務管理器看到的名稱是java(TM)的,如果是運行多個項目,那么根本分不清楚是哪個項目,所以不推薦。

@echo off
start javaw -jar C:\Users\lyr\Desktop\test\research.jar
exit


免責聲明!

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



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