Java Service Wrapper實踐

 

好久前就使用JAVA寫了一個後臺服務器,基於MINA框架的。而且一直部署運行於服務器中,固然有一個黑框框。java

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

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

1,服務器問題重啓後,每次都要登陸遠程將服務器打開,即便我已經配置了開機自啓動,可是因爲黑框框是基於界面運用的,每次必需要完成系統啓動畫面以後該黑框框才能啓動。因此即便設置成了開機自啓動,每次服務器維護重啓後,都須要登陸一下遠程出發系統加載。服務器

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

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

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

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

Java Service Wrapper的Standard,Professional版本是須要license的,通俗的說是要收費,可是Community版本不須要,至於版本之間的區別我想對我影響不大,因此沒有深究。就用Community版本吧。 性能

下載下來後解壓: 動畫

圖一

我現有的項目很簡單:

圖二

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等命令。

完成以上操做後,個人項目目錄以下:

具體目錄結構:

+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命令安裝服務

同時相應的服務咱們已經能夠在系統服務中查詢到

 

同理咱們執行AppCommand.bat stop/remove/pause等命令也均可以對該服務進行操做,固然也能夠執行在系統服務中對服務進行操做。

 

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

固然實踐是完成了,關於Java Service Wrapper還有其餘一些東西須要繼續深刻研究 尤爲是關於wrapper.conf文件的配置。。

相關文章
相關標籤/搜索