Posted on 2006-01-25 09:34
qiyadeng 閱讀(5974)
評論(3) 編輯 收藏
因為需要對網絡環境進行監控,做了個Java程序在linux服務器上運行。但是每次重新啟動的時候都要手動的運行,這樣就不太現實。所以想到把Java程序做成像Windows的系統服務那樣,開機就會自動在后臺運行。以前使用過一個工具http://javaservice.objectweb.org/,可以把Java程序注冊成為Windows的系統服務,而且使用起來很簡單,但是遺憾的是該工具不能注冊linux的后臺服務。所以不得不另外尋找工具。
最后找到了JavaService Wrapper(http://wrapper.tanukisoftware.org/doc/english/introduction.html),該工具能在很多中平臺下面注冊為系統服務(查看支持平臺)。該工具使用方法有三種模式,我用的是第一種WrapperSimpleApp幫助類,另外的兩種方式都需要在原來的程序上進行適當的編碼。下面就用我的程序NetWatchDog為例子說明下大概的配置步驟。(其實文檔中已經用Jboss進行了演示)
1.建立一個目錄名為NetWatchDog,并在該目錄下建立bin,lib,conf,logs目錄。以下把NetWatchDog目錄稱為$DOG_HOME。
2.把下載來的文件解壓,把$WRAPPER_HOME/bin/wrapper,$WRAPPER_HOME/src/bin/sh.script.in文件copy到$DOG_HOME/bin目錄中。
3.把sh.script.in文件該名為你的服務名稱,這里改為NetWatchDog。
4.編輯NetWatchDog,把Application的相關信息改為如下:
APP_NAME="NetWatchDog"
APP_LONG_NAME="NetWatchDog Application"
5.把你的程序的打包成jar文件,拷貝到$DOG_HOME/lib目錄下,并把$WRAPPER_HOME/lib/libwrapper.so,$WRAPPER_HOME/lib/wrapper.jar文件也拷貝到$DOG_HOME/lib目錄下面。
6.這步比較重要是成敗的關鍵,把$WRAPPER_HOME/conf/wrapper.conf文件拷貝到$DOG_HOME/conf目錄下(文檔上面說的是wrapper.conf.in文件,但是我下載來的文件就是wrapper.conf,所以步需要改名的)。
7.編輯wrapper.conf文件:
#java命令的位置
wrapper.java.command=%JAVA_HOME%/bin/java
#wrapper的主類
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
#java classpath
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=%JAVA_HOME%/jre/lib/ext/log4j-1.2.13.jar
wrapper.java.classpath.3=%JAVA_HOME%/jre/lib/ext/activation.jar
wrapper.java.classpath.4=%JAVA_HOME%/jre/lib/ext/commons-email-1.0.jar
wrapper.java.classpath.5=%JAVA_HOME%/jre/lib/ext/mail.jar
wrapper.java.classpath.6=../lib/NetWatchDog.jar
#你的程序的主類,將作為wrapper的參數
wrapper.app.parameter.1=qiya.deng.main.Main
8.這樣基本就大功告成了,現在可以運行命令./NetWatchDog start,如果提示權限不夠就用chmod 755 NetWatchDog命令改變權限。如果沒出現錯誤提示,這樣基本上就正確了。
另外Windwos版本可以參考:http://blog.chinaunix.com/u/1677/?u=http://blog.chinaunix.com/u/1677/showart.php?id=67084