码迷,mamicode.com
首页 > 移动开发 > 详细

Java Service Wrapper

时间:2015-01-06 15:38:49      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:



参考文档:
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.

Java Service Wrapper

标签:

原文地址:http://blog.csdn.net/it_man/article/details/42458945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!