Java Service Wrapper實踐

jopen 10年前發布 | 16K 次閱讀 Java開發 Java Service

當我們用JAVA來寫后臺服務器的時候,當服務器啟動務必會出現一個黑框框。為了消除這個黑框框以及黑框框帶來的一些不利條件,使用Java Service Wrapper將其制作成標準的WINDOWS NT服務是有必要的。

很久前就使用JAVA寫了一個后臺服務器,基于MINA框架的。并且一直部署運行于服務器中,當然有一個黑框框。

就正常運行而言,此種運行方式沒有任何問題。

但是就這運行期間出現的一些問題:

1,服務器問題重啟后,每次都要登錄遠程將服務器打開,即使我已經配置了開機自啟動,但是由于黑框框是基于界面運用的,每次必須要完成系統啟動畫面之后該黑框框才能啟動。所以即使設置成了開機自啟動,每次服務器維護重啟后,都需要登錄一下遠程出發系統加載。

2,有個黑框框總顯低端些,并且容易不小心被關閉。

基于以上問題,加之以前就對Java Service Wrapper有所涉獵,但并未實踐,所以利用一點時間來將服務器打包成WINDOWS NT服務。

關于Java Service Wrapper的介紹在此就不鰲訴了,http://wrapper.tanukisoftware.com/doc/english/download.jsp

本人最簡單的了解,就是將JAVA應用打包成標準的WINDOS(當然也包含linux,在此僅以windows為例)服務。

Java Service Wrapper的Standard,Professional版本是需要license的,通俗的說是要收費,但是Community版本不需要,至于版本之間的區別我想對我影響不大,所以沒有深究。就用Community版本吧。

下載下來后解壓:

Java Service Wrapper實踐

圖一

我現有的項目很簡單:

Java Service Wrapper實踐

圖二

server-server-1.0.0-release.jar是還行文件,libs/下是運行時所需要的依賴包,log是日志保存目錄,conf是配置文件目錄。

要使用Java Service Wrapper首先需要

(1)將圖一中lib目錄下的wrapper.dll、wrapper.jar拷貝到圖二中的libs下。

(2)將圖一中bin目錄下的wrapper.exe文件拷貝到圖二中當前目錄下,該文件是將java應用打包成對應平臺服務的可執行文件

(3) 將圖一中src/conf目錄下的wrapper.conf.in文件拷貝到圖二中conf下并將.in后綴去掉,wrapper.conf.in文件是 一個標準的配置模板,用來配置Java Service Wrapper的,配置的內容就是項目目錄結構、依賴關系、啟動、jvm性能、日志、異常處理等等,稍微看一下應該就很容易理解。

(4)將圖一中src/bin 目錄下的AppCommand.bat.in文件拷貝到圖二中的當前目錄下并將.in后綴去掉。該文件是一個基于命令行的可執行文件,可以用于對相應的服 務執行start,install,uninstall,pause,resume,stop等命令。

完成以上操作后,我的項目目錄如下:

Java Service Wrapper實踐

具體目錄結構:

+conf

  -wrapper.conf

+libs

  -wrapper.dll

  -wrapper.jar

+log

AppCommand.bat

server-server-1.0.0-release.jar

wrapper.exe

接下來也是最重要的一步就是配置wrapper.conf文件

主要修改的有以下幾點;

(1)類加載路徑Java Classpath

# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1
wrapper.java.classpath.1=server-server-1.0.0-release.jar
wrapper.java.classpath.2=libs/wrapper.jar

(2)動態庫加載路徑Java Library Path

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=libs

(3)需要運行的應用主類以及啟動參數Application parameters

wrapper.app.parameter.1=cn.iever.wxh.yjserver.server.App     //我的應用主類
wrapper.app.parameter.2=-h120                                          //應用參數

 (4)日志輸出文件Log file to use for wrapper output logging.

# Log file to use for wrapper output logging.
wrapper.logfile=log/wrapper.log

 (5)服務描述Wrapper Windows NT/2000/XP Service Properties

# Name of the service
wrapper.name=SmartHome

# Display name of the service
wrapper.displayname=Smart Home Service

# Description of the service
wrapper.description=Yong Jing Smart Home Service

wrapper的配置文件模板中給出的其他配置我基本采用默認,還沒有深入去對各個配置信息進行研究,但是以上配置已經可以基本符合我的需求。

接下來需要修改一下AppCommand.bat文件

主要將文件內容中的set _WRAPPER_CONF="conf/%_WRAPPER_BASE%.conf"進行修改,即設定配置文件所以在路徑。

 

到此一切準備工作以及配置也都完成了。

打開cmd執行AppCommand.bat install命令安裝服務Java Service Wrapper實踐

同時相應的服務我們已經可以在系統服務中查詢到

Java Service Wrapper實踐

 

同理我們執行AppCommand.bat stop/remove/pause等命令也都可以對該服務進行操作,當然也可以執行在系統服務中對服務進行操作。

 

至此我就使用Java Service Wrapper將我的java應用打包成了后臺服務。

當然實踐是完成了,關于Java Service Wrapper還有其他一些東西需要繼續深入研究 尤其是關于wrapper.conf文件的配置。。
來自:http://my.oschina.net/yjwxh/blog/260835

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!