Java Service Wrapper使用總結

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目錄結構

         以下列出需要複製到應用的文件:

         {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)定位啓動及關閉tomcatJava命令

                         打開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
發佈了65 篇原創文章 · 獲贊 93 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章