Java
Service Wrapper 0積分下載:http://download.csdn.net/detail/baohuan_love/6683711
1.概述
Java Service Wrapper可爲應用程序提供以下功能:
(1)把應用安裝爲Windows服務或Linux守護進程;
(2)監測JVM運行情況,對於程序原因或內存溢出導致的虛擬機崩潰實現自動重啓;
(3)記錄運行日誌;
2.Java Service Wrapper目錄結構
以下列出需要複製到應用的文件:
--/bin/wrapper
-- /src/bin/sh.script.in
--/src/conf/wrapper.conf.in
--/lib/libwrapper.so
--/lib/wrapper.jar
Java Service Wrapper與應用集成時,需要把上述文件複製到應用中相應的目錄,詳情請見以下的兩個集成。
3.使用WrapperSimpleApp進行集成
WrapperSimpleApp是Java Service Wrapper中最簡單的集成方式,在該例子中,我們把它集成到我們的ams-collector-verify抓拍程序中。
3.1 ams-collector-verify目錄結構{ams-collector-verify}
--/bin
--/etc
--/lib
--logs
3.2 複製Java Service Wrapper文件到應用程序
(1)複製/bin/wrapper到應用的bin目錄;
(2)複製/src/bin/sh.script.in到應用的bin目錄;
(5)複製/src/conf/wrapper.conf.in到應用的etc目錄下;
(6)複製/lib/libwrapper.so到應用的lib目錄;
(7)複製/lib/wrapper.jar到應用的lib目錄;
3.3 編輯sh.script.in文件
該文件可以看作是入口點,啓動應用也是使用該腳本,按以下步驟進行操作:
(1)重命名sh.script.inmv sh.script.in collector-verify;
(2)賦執行權限
例如在Linux下:chmod 755 collector-verify;
(3)編輯collector-verify屬性
#應用縮寫
APP_NAME="collector-verify"
#應用全名
APP_LONG_NAME="ams-collector-verify"
#wrapper配置文件所在位置
WRAPPER_CONF="../etc/wrapper.conf"
3.4編輯wrapper.conf.in文件
所有java service wrapper配置項均在此設置,按以下步驟進行設置:
(1)重命名wrapper.conf.inmv wrapper.conf.in wrapper.conf
(2)定位啓動應用的Java命令
當我們知道應用是如何啓動的,我們才能將啓動所需的參數,classpath及依賴包寫入我們的wrapper.conf中;
在ams-collector-verify應用中,啓動應用的java程序如下:
/usr/java/jdk1.6.0_13/jre/bin/java -classpath
/usr/local/ams-collector-verify/bin/commons-launcher.jar:
/usr/local/ams-collector-verify/etc:
/usr/local/ams-collector-verify/lib/ams-collector-verify-1.0.jar:
...
com.ce.collector.app.SnapApp
從上面的命令可以看到,它包含兩方面的信息:
1)classpath參數加載了lib目錄下的所有jar包;
2)com.ce.collector.appSnapApp類是程序的入口點。
(3)編輯wrapper.conf屬性
#設置JAVA_HOME
set.JAVA_HOME=/usr/java/jdk1.6.0_13
#動態鏈接庫放置在JAVA_HOME/bin下,設置LD_LIBRARY_PATH變量
set.LD_LIBRARY_PATH=%JAVA_HOME%/bin:%LD_LIBRARY_PATH%
#設置java命令路徑
wrapper.java.command=%JAVA_HOME%/bin/java
#設置classpath路徑,設置的內容包括wrapper.jar,應用配置文件所在的路徑,應啓動時classpath包含的所有信息
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../etc
wrapper.java.classpath.3=../lib/ams-collector-verify-1.0.jar
...
#wrapper.DLL及libwrapper.so所在的位置
wrapper.java.library.path.1=../lib
#應用程序啓動的類(帶有main方法的類)
wrapper.app.parameter.1=com.ce.collector.app.SnapApp
#設置控制檯的名稱
wrapper.console.title=ams-collector-verify
#服務名稱
wrapper.name=ams-collector-verify
#服務的顯示名稱
wrapper.displayname=ams-collector-verify
#服務的描述信息
wrapper.description=collector-verify for ams system
配置完成後,回到應用的bin目錄下,試試利用collectory-verify腳本啓動應用
[root@suhao03 etc]# cd ../bin
[root@suhao03 bin]# ./collector-verify start
Starting ams-collector-verify...
Waiting for ams-collector-verify....
running: PID:8445
可以到logs目錄進一步查看應用啓動的情況
[root@suhao03 bin]# cd ../logs/
[root@suhao03 logs]# tail -f wrapper.log
停止應用可執行以下命令
[root@suhao03 bin]# ./collector-verify stop
4.使用WrapperStartStopApp進行集成
Tomcat應用服務器在啓動時會開啓一個服務端socket等待連接,而關閉時則通過連接觸發應用的停止,類似這種應用則通過WrapperStartStopApp實現。
4.1Tomcat的目錄結構{tomcat_home}
--/bin
--/conf
--/logs
--/temp
--/webapps
--/work
4.2複製Java Service Wrapper文件到Tomcat
(1)複製/bin/wrapper到Tomcat的bin目錄;
(2)複製/src/bin/sh.script.in到Tomcat的bin目錄;
(5)複製/src/conf/wrapper.conf.in到Tomcat的etc目錄下;
(6)複製/lib/libwrapper.so到Tomcat的lib目錄;
(7)複製/lib/wrapper.jar到Tomcat的lib目錄;
4.3 編輯sh.script.in文件
該文件可以看作是入口點,啓動應用也是使用該腳本,按以下步驟進行操作:
(1)重命名sh.script.inmv sh.script.in tomcat;
(2)賦執行權限
例如在Linux下:chmod 755 tomcat;
(3)編輯tomcat屬性
#應用縮寫
APP_NAME="tomcat"
#應用全名
APP_LONG_NAME="Tomcat Application Server"
4.4編輯wrapper.conf.in文件
所有java service wrapper配置項均在此設置,按以下步驟進行設置:
(1)重命名wrapper.conf.inmv wrapper.conf.in wrapper.conf
(2)定位啓動及關閉tomcat的Java命令
打開bin/catalina.sh文件,分別找到啓動及關閉的shell腳本,把shell腳本的內容echo到控制檯,看看它是如何啓動及關閉tomcat的:
[run]
echo "$_RUNJAVA" $JAVA_OPTS "$LOGGING_CONFIG" $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start
echo的結果爲:
/usr/java/jdk1.6.0_13/bin/java
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=/usr/local/apache-tomcat-6.0.18/conf/logging.properties
-Djava.endorsed.dirs=/usr/local/apache-tomcat-6.0.18/endorsed -classpath :/usr/local/apache-tomcat-6.0.18/bin/bootstrap.jar
-Dcatalina.base=/usr/local/apache-tomcat-6.0.18
-Dcatalina.home=/usr/local/apache-tomcat-6.0.18
-Djava.io.tmpdir=/usr/local/apache-tomcat-6.0.18/temp
org.apache.catalina.startup.Bootstrap start
[stop]
echo "$_RUNJAVA" $JAVA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" stop
echo的結果爲:
/usr/java/jdk1.6.0_13/bin/java
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=/usr/local/apache-tomcat-6.0.18/endorsed -classpath :/usr/local/apache-tomcat-6.0.18/bin/bootstrap.jar
-Dcatalina.base=/usr/local/apache-tomcat-6.0.18
-Dcatalina.home=/usr/local/apache-tomcat-6.0.18
-Djava.io.tmpdir=/usr/local/apache-tomcat-6.0.18/temp
org.apache.catalina.startup.Bootstrap stop
(3)編輯wrapper.conf屬性
#設置JAVA_HOME
set.JAVA_HOME=/usr/java/jdk1.6.0_13
#設置CATALINA_HOME
set.CATALINA_HOME=/usr/local/apache-tomcat-6.0.18
#設置CATALINA_BASE
set.CATALINA_BASE=/usr/local/apache-tomcat-6.0.18
#設置JAVA執行命令
wrapper.java.command=%JAVA_HOME%/bin/java
#設置classpath
wrapper.java.classpath.1=%CATALINA_BASE%/lib/wrapper.jar
wrapper.java.classpath.2=%CATALINA_HOME%/bin/bootstrap.jar
#設置lib
wrapper.java.library.path.1=%CATALINA_BASE%/lib
#添加tomcat啓動時所在命令設置的-D參數
wrapper.java.additional.1=
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
wrapper.java.additional.2=
-Djava.util.logging.config.file=%CATALINA_BASE%/conf/logging.properties
wrapper.java.additional.3=
-Djava.endorsed.dirs=%CATALINA_BASE%/endorsed
wrapper.java.additional.4=
-Dcatalina.base=%CATALINA_BASE%
wrapper.java.additional.5=
-Dcatalina.home=%CATALINA_HOME%
wrapper.java.additional.6=-Djava.io.tmpdir=%CATALINA_BASE%/temp
#添加應用參數
wrapper.app.parameter.1=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.2=1
wrapper.app.parameter.3=start
wrapper.app.parameter.4=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.5=TRUE
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop
#日誌文件所在位置
wrapper.logfile=%CATALINA_BASE%/logs/wrapper.log
#設置控制檯的名稱
wrapper.console.title=tomcat
#服務名稱
wrapper.name=tomcat
#服務的顯示名稱
wrapper.displayname=tomcat application server
#服務的描述信息
wrapper.description=tomcat for ams system
配置完成後,回到tomcat的bin目錄下,試試用tomcat腳本啓動服務器
[root@suhao03 etc]# cd ../bin
[root@suhao03 bin]# ./tomcat start
Starting tomcat...
Waiting for tomcat....
running: PID:8445
可以到logs目錄進一步查看tomcat啓動的情況
[root@suhao03 bin]# cd ../logs/
[root@suhao03 logs]# tail -f wrapper.log
停止tomcat可執行以下命令
[root@suhao03 bin]# ./tomcat stop
5.安裝及卸載服務安裝及卸載服務可以通過腳本的install及remove參數完成,想查看service wrapper提供的參數,可鍵入命令:
[root@suhao03 bin]# ./collector-verify -help
Usage: ./collector-verify [ console | start | stop | restart | condrestart | status | install | remove | dump ]
Commands:
console Launch in the current console.
start Start in the background as a daemon process.
stop Stop if running as a daemon or in another console.
restart Stop if running and then start.
condrestart Restart only if already running.
status Query the current status.
install Install to start automatically when system boots.
remove Uninstall.
dump Request a Java thread dump if running.
5.1安裝服務
[root@suhao03 bin] ./collectory-verify install
可以到/etc/rc.d/init.d目錄看到增加了以下的符號鏈接:
collector-verify -> /usr/local/ams-collector-verify/bin/./collector-verify
5.2卸載服務
[root@suhao03 bin] ./collectory-verify remove
6.配置對內存溢出進行監控
在某些情況下,當應用出現outofmemory時,我們希望它能立即重啓,java service wrapper可以爲我們實現這一點。
打開conf/wrapper.conf文件,對以下內容進行設置
wrapper.filter.trigger.1001=Exception in thread "*" java.lang.OutOfMemoryError
wrapper.filter.allow_wildcards.1001=TRUE
wrapper.filter.action.1001=RESTART
wrapper.filter.message.1001=The JVM has run out of memory.
原文地址:http://blog.chinaunix.net/uid-664509-id-3398193.html