好久前就使用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文件的配置。。