作者:g21121
來源:https://www.iteye.com/blog/286-1915478
在實際開發過程中很多模塊需要獨立運行,他們並不會以web形式發布,傳統的做法是將其壓縮為jar包獨立運行,這種形式簡單易行也比較利於維護,但是一旦伺服器重啟或出現異常時,程序往往無法自行修復或重啟。解決伺服器重啟的傳統做法是編寫一段shell腳本隨伺服器啟動而運行,但是這樣做只是治標,那麼我們想尋求一種「治本」的方式該怎麼辦呢?
Java Service Wrapper就輕鬆而簡單的為我們解決了這些問題。"Java Service Wrapper"顧名思義,將我們的Java程序包裝成系統服務,這樣就可以隨著系統的運行而自動運行,當然Java Service Wrapper(下面簡稱Wrapper)的功能絕不僅於此。
Wrapper下載地址:http://wrapper.tanukisoftware.com/doc/english/download.jsp
通過下載頁面我們可以看到Wrapper幾乎支持所有的系統環境,說明Wrapper在這方面還是很下工夫的,目前最新版本為3.5.20,我們選擇Linux x86版本下載,解壓後目錄組成如下圖所示:
為了更直觀的了解Wrapper的目錄及文件結構,可以通過"tree"命令列出Wrapper的所有文件樹,cmd控制台下輸入命令:
Cmd代碼
以下是官方給出的一些Wrapper的優點:
(1) 使用我們的產品無須在你的程序中添加任何額外的代碼。
(2) 當你的程序或JVM出現問題時會自動響應事先定製的策略。
(3) 當出現問題時會及時進行通知。
(4) 完善的日誌記錄功能可以更好為您提供支持。
(5) 在不同的系統上你可以指定一個標準的流程相同流程,也就是說相同的程序可以不必修改即運行於不同系統。
(6) 可以將你的應用安裝成windows或unix的服務或守護進程。
看到Wrapper有這麼多好處,那麼我們就通過Wrapper自帶的示例程序來進一步了解Wrapper吧:
1.創建服務工作目錄,以作業系統為Linux,目錄結構為usr/local/wrapper為例,按照上面的目錄結構,在其下創建"bin","conf","lib","logs"這四個相同名稱的文件夾。
2.將配置及程序文件複製至相應目錄(也就是上面標的文件);
(1)bin 目錄下的wrapper 文件複製到usr/local/wrapper/bin下。
(2)src\\bin 目錄下的sh.script.in 文件複製到usr/local/wrapper/bin下,並將.in後綴名刪除並修改名稱,修改後為javaService.script。
(3)conf 目錄下的wrapper.conf 文件複製到usr/local/wrapper/conf下。
(4)lib 目錄下的wrapper.jar 和libwrapper.so 文件複製到usr/local/wrapper/lib下。
註:
以上是正式環境所需文件的配置方式,這裡我們需要運行Wrapper自帶的demo程序,所以需要將demoapp,demoapp.conf,wrapperdemo.jar 這三個文件複製到相應目錄。
3.進入bin目錄執行以下命令:
Shell代碼
./demoapp start
接下來會顯示很多提示,最終顯示如下頁面:
出現此頁面證明你的程序已經運行成功了,恭喜!
如果啟動失敗,我們可以查看logs日誌內容,如下:
Log代碼
從日誌內容可以查看程序及服務的運行狀態,Wrapper日誌採用此種格式:類型 | 擁有者 | 時間 | 具體內容
日誌內容顯示我們的Linux系統沒有安裝圖形介面或者根本沒有顯卡。
註:這裡需要說明一下,Wrapper運行首先需要Java運行環境支持,所以在使用Wrapper前請先確認已安裝好了Java。
下面我們來嘗試一下無參數調用服務的方式,如:
Shell代碼
./testwrapper
./demoapp
兩者的提示相同,都為:
Shell代碼
原來Wrapper提供了很多種參數的選擇,如:start為啟動,stop為停止。下面為參數的詳細解釋:
Shell代碼
我們還發現單獨運行wrapper命令時的提示內容與前面兩者不同,如下所示:
Shell代碼
因為wrapper是Wrapper運行的主程序也是核心,他無法單獨運行需要通過src/bin中的sh.script.in這個shell腳本調用,這個文件的使用我們之後會講到。
運行wrapper可以按如上提示添加參數,如:
./wrapper -c wrapper.properties
以上就是對Wrapper的一個整體認識,希望此文可以幫助大家更快的上手並使用Wrapper,之後幾篇文章會詳細講解Wrapper的配置及定製自己的應用。