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/s