Java Service Wrapper使用总结

参考文档:

http://wrapper.tanukisoftware.com/doc/english/integrate-start-stop-nix.html

目录

Java Service Wrapper使用总结... 1

1.概述... 2

2.Java Service Wrapper目录结构... 2

{WRAPPER_HOME} 2

3.使用WrapperSimpleApp进行集成... 2

3.1        ams-collector-verify目录结构... 2

3.2        复制Java Service Wrapper文件到应用程序... 3

3.3        编辑sh.script.in文件... 3

(1)重命名sh.script.in. 3

(2)赋执行权限... 3

(3)编辑collector-verify属性... 3

3.4编辑wrapper.conf.in文件... 3

(1)重命名wrapper.conf.in. 4

(2)定位启动应用的Java命令... 4

(3)编辑wrapper.conf属性... 4

4.使用WrapperStartStopApp进行集成... 5

4.1Tomcat的目录结构... 5

4.2复制Java Service Wrapper文件到Tomcat. 6

4.3        编辑sh.script.in文件... 6

(1)重命名sh.script.in. 6

(2)赋执行权限... 6

(3)编辑tomcat属性... 6

4.4编辑wrapper.conf.in文件... 6

(1)重命名wrapper.conf.in. 6

(2)定位启动及关闭tomcat的Java命令... 7

(3)编辑wrapper.conf属性... 8

5.安装及卸载服务... 9

5.1安装服务... 10

5.2卸载服务... 10

6.配置对内存溢出进行监控... 10

 

 

 

 

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.

posted on 2013-09-07 08:27  荣锋亮  阅读(1251)  评论(0编辑  收藏  举报

导航