Java Service Wrapper將jar包安裝成Windows服務

來源:互聯網
上載者:User

標籤:zip   存在   服務管理   data   尾碼   選擇   一個   其它   1.2   

剛接觸java,第一次使用Java開發windows服務,也是剛不久看了SSM架構

簡直也是一頭霧水,不過只要用心理解,其實很簡單,下面有詳細的步驟,包學包會

 

在windows上運行jar包,需要在工作目錄下使用命令列運行jar包,這樣會出現一個命令列視窗

而且這個命令列視窗有可能會不小心被關閉,且伺服器啟動後需要人為去點擊開啟

對於有些服務性的程式來說,我們需要將其部署為windows服務,在系統啟動的時候自動啟動

後來研究了兩種方式:

1、使用 JavaService.exe 安裝jar包

   查了很多資料,最終這種方式也是可行的,可以成功將Jar包安裝成WindowService

不過JavaService.exe的缺陷是不方便顯視的配置參數,而且安裝使用DOS命令

JavaService提供了8個參數可供選擇,這裡使用-install參數安裝NT服務時還需要提供與服務相關的其它一些參數,其命令格式如下:
JavaService -install service_name jvm_library [jvm_options]
        -start start_class [-method start_method] [-params (start_parameters)]
        [-stop start_class [-method stop_method] [-params (stop_parameters)]]
        [-out out_log_file] [-err err_log_file]
        [-current current_dir]
        [-path extra_path]
        [-depends other_service]
        [-auto | -manual]
        [-shutdown seconds]
        [-user user_name -password password]
        [-append | -overwrite]
        [-startup seconds]
        [-description service_desc]

下面的命令是我自己項目中安裝NT服務:

JavaService.exe  -install  TestService   "%JAVA_HOME%"/jre/bin/server/jvm.dll    -Xmx128m   -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;"%CD%"/lib/jtds-1.2.5.jar;"%CD%" -start com.azure.TestService  -method  startService  -stop  com.azure.TestService  -method stopService -out "%CD%"/log/log.log -err "%CD%"/log/error.log  -current  "%CD%"  -auto

成功安裝服務後就可以用以下命令對其進行卸載,啟動和停止操作。

        JavaService.exe -uninstall TestService

        net start TestService

        net stop TestService

這樣以後安裝升級維護也挺麻煩,DOS命令還容易出錯,不推薦,因此找了下面的第二種方式

 

2、使用 Java Service Wrapper 安裝jar包

  Java Service Wrapper使用可視的設定檔,將參數進行配置化儲存,使用方便且不會增加記憶壓力

使用之前參考了如下文章:

http://www.blackzs.com/archives/679 (可參考該文章配置Artifacts,第三點以後可忽視,因為Java Service Wrapper有特定檔案夾管理)

http://286.iteye.com/blog/1921414    (該文章詳細的說明了Java Service Wrapper設定檔的含義)

 

參考了之後,準備下載檔案,Java Service Wrapper:http://wrapper.tanukisoftware.com/doc/english/download.jsp

由於我的伺服器是64位的,在下載的時候發現64位下沒有免費版的,又擔心其他2個版本要收費,故也沒有下載其他2個版本,在網上尋找破解版的,最後在這個網址上下載了一個:

https://www.krenger.ch/blog/java-service-wrapper-3-5-14-for-windows-x64/

我下載的版本是3.5.14。

然後開始進行配置:

1.在我的伺服器上建立了一個檔案夾,取名 jar_jsw。

2.解壓下載的zip包。

3.在建立的檔案夾jar_jsw下建立bin、conf、lib、logs檔案夾,並且將需要啟動的jar包複製到jar_jsw目錄下,我的jar包為:processapp.jar

4.把解壓後的檔案夾中src\bin中的檔案複製到建立的jar_jsw/bin檔案夾下面。並把所有檔案的in尾碼去掉。同時把解壓後檔案夾中bin下的wrapper.exe也放到建立的bin下

5.把解壓後的檔案夾中src\conf中的檔案複製到建立的conf檔案夾中。把in尾碼去掉,其實只有一個檔案,即wrapper.conf。

6.把解壓後的檔案夾中lib中的wrapper.jar與wrapper.dll放到建立的lib下面。同時把啟動jar包程式所需要的第三方jar包也放在這裡。

7.開始配置wrapper.conf檔案。配置選項請參見其它的文章。

8.配置以後,點擊bin檔案夾下面的App.bat進行測試,如果能夠在console中出現正常結果的話就表明配置正確。然後點擊InstallApp-NT.bat安裝服務,也可以點擊UninstallApp-NT.bat卸載服務。成功安裝服務後可以在window服務管理中看到。

 

註:我的jar包使用了 System.getProperty("user.dir")  來擷取工作目錄,按照預設的設定,我啟動的程式要報錯,總是報找不到檔案。於是我在網上查看jsw是否有修改工作目錄的參數,最後在此進行了參考:

https://wrapper.tanukisoftware.com/doc/english/properties.html

發現有 wrapper.working.dir 這個設定,於是參考其設定:https://wrapper.tanukisoftware.com/doc/english/prop-working-dir.html

 

當修改了工作目錄後,其對應的classpath等參數也需要做相應的變動,如所示的參數。我修改之後一切OK。 

 至此,我將jar包封裝成windows服務完成。

 寫在後面,我發現activemq也是使用此方法安裝的服務。

 

異常處理

1、如果報org.tanukisoftware.wrapper.test.Main不存在。

wrapper.java.mainclass=org.tanukisoftware.wrapper.test.Main
修改成
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

總之,如果報相關類不存在,就要仔細查看配置路徑,以及LIB是否全等。

2.、所有錯誤均記錄在log/wrapper.log下。

3、JVM did not exit on request, terminated ,如果報此錯誤說明你沒有按我上面寫的去配置,而是將主程式配置在了wrapper.java.mainclass,其實這種配置方式也可以,只是與我的寫法不一樣而已,如果你非要寫在manclass,那具體解決方案可參考:http://bbs.csdn.net/topics/90143848  查看10樓回答。

4、There were 5 failed launches in a row, each lasting less than 300 seconds.  Giving up。此錯誤是由於配置主方法導致的,注意wrapper.app.parameter.1的路徑以及是否去掉了它前面的#。

 

原文:http://www.bubuko.com/infodetail-2169827.html  (本文加了一些補充)  

 

Java Service Wrapper將jar包安裝成Windows服務

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.