Java Service Wrapper
参考文档:
http://wrapper.tanukisoftware.com/doc/english/integrate-start-stop-nix.html
目录
Java Service Wrapper使用总结
1.概述
2.Java Service Wrapper目录结构
{WRAPPER_HOME}
3.使用WrapperSimpleApp进行集成
3.1 ams-collector-verify目录结构
3.2 复制Java Service Wrapper文件到应用程序
3.3 编辑sh.script.in文件
(1)重命名sh.script.in
(2)赋执行权限
(3)编辑collector-verify属性
3.4编辑wrapper.conf.in文件
(1)重命名wrapper.conf.in
(2)定位启动应用的Java命令
(3)编辑wrapper.conf属性
4.使用WrapperStartStopApp进行集成
4.1Tomcat的目录结构
4.2复制Java Service Wrapper文件到Tomcat
4.3 编辑sh.script.in文件
(1)重命名sh.script.in
(2)赋执行权限
(3)编辑tomcat属性
4.4编辑wrapper.conf.in文件
(1)重命名wrapper.conf.in
(2)定位启动及关闭tomcat的Java命令
(3)编辑wrapper.conf属性
5.安装及卸载服务
5.1安装服务
5.2卸载服务
6.配置对内存溢出进行监控
1.概述
Java Service Wrapper可为应用程序提供以下功能:
(1)把应用安装为Windows服务或Linux守护进程;
(2)监测JVM运行情况,对于程序原因或内存溢出导致的虚拟机崩溃实现自动重启;
(3)记录运行日志;
2.Java Service Wrapper目录结构
以下列出需要复制到应用的文件:
{WRAPPER_HOME}
--/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.in
mv 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.in
mv 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.in
mv 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.in
mv 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.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。