[JAVA学习笔记-80]Java service wrapper入门

来源:互联网 发布:ky什么意思网络用语 编辑:程序博客网 时间:2024/06/04 18:17
Java service wrapper可以将java程序像业务一样部署到Linux/Windows平台,Wrapper进程类似一个daemon,负责监听java程序的状态,

当java程序出现异常崩溃(如JVM崩溃)时,对java程序的业务进行重启,并记录日志等。

【配置方法】:
1、下载指定的程序包,注意OS平台,32bit/64bit,并区分standard与community版本,其中后者是免费的,但没有deadlock detection功能

2、JSW解压后有6个文件夹,分别是    bin:可执行程序,包括一个demo,一个test,以及wrapper的核心程序         demo用来模拟app在wrapper上遇到异常时的场景;test用来展示wrapper的功能集    conf:配置文件,其中wrapper.conf异常重要,使用wrapper主要修改该文件    doc:文档,忽略    lib:libwrapper.so以及wrapper.jar是必须的两个文件,在windows下可能是wrapper.dll    logs:日志文件的路径    src: src/bin/ 路径下的 sh.script.in 是关键的脚本,上述bin中的wrapper可执行文件,需要通过该脚本调用才能运行3、可以直接在JSW现成的目录结构下部署,但一般来说,每个项目都有自己的目录结构,因此需要根据实际情况,调整 wrapper.conf 以及   sh.script.in 中跟路径相关的配置。   一种比较简单的方式,是在项目工程中分别创建bin,conf,lib,logs 4个文件夹:   bin:拷贝/bin/wrapper到此目录下   conf:拷贝/conf/wrapper.conf到此目录下   lib:拷贝libwrapper.so以及wrapper.jar到此目录下,并将用户程序的jar包也放在这里,例如customTest.jar   logs:不需要做处理4、如果上述各文件夹的相对路径没有改变,可不改变 sh.script.in 脚本        # Application        APP_NAME="@app.name@"        APP_LONG_NAME="@app.long.name@"        # Wrapper        WRAPPER_CMD="./wrapper"        WRAPPER_CONF="../conf/wrapper.conf"5、重点在 wrapper.conf 配置文件    5.1     wrapper.java.mainclass=org.tanukisoftware.wrapper.test.Main        改为:wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp        使用 WrapperSimpleApp来集成用户程序,是JSW官网最推荐的方式,也比较简单,不需要额外的编码,只需要把用户程序的入口作为        参数传给SimpleApp即可,wrapper通过SimpleApp调用用户进程。        链接如下:        http://wrapper.tanukisoftware.com/doc/english/integrate.html#method1    5.2     添加所依赖的jar包,包括用户程序的jar包            # Java Classpath (include wrapper.jar)  Add class path elements as            #  needed starting from 1            wrapper.java.classpath.1=../lib/wrappertest.jar            wrapper.java.classpath.2=../lib/wrapper.jar    5.3     添加库文件的搜索路径            # Java Library Path (location of Wrapper.DLL or libwrapper.so)            wrapper.java.library.path.1=../lib    5.4     设置JVM的堆大小            # Initial Java Heap Size (in MB)            #wrapper.java.initmemory=3            # Maximum Java Heap Size (in MB)            #wrapper.java.maxmemory=64    5.5     指定用户的程序入口            # Application parameters.  Add parameters as needed starting from 1            wrapper.app.parameter.1=com.test.ServerMain   【程序入口的类】            wrapper.app.parameter.1=xxx    5.6     指定是否打开wrapper的debug信息,默认是关闭的            # Enables Debug output from the Wrapper.            # wrapper.debug=TRUE    5.6     指定logfile,一般保持默认即可            # Log file to use for wrapper output logging.            wrapper.logfile=../logs/wrapper.log    5.7     设置日志文件的单个大小限制,以及个数限制            # Maximum size that the log file will be allowed to grow to before            #  the log is rolled. Size is specified in bytes.  The default value            #  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or            #  'm' (mb) suffix.  For example: 10m = 10 megabytes.            wrapper.logfile.maxsize=0            # Maximum number of rolled log files which will be allowed before old            #  files are deleted.  The default value of 0 implies no limit.            wrapper.logfile.maxfiles=0    对于community版本来说,其它都可以保持不变。

【使用】
1、启动
执行 ./sh.script.in start 启动程序
执行 ./sh.script.in stop 终止程序
其它的参数可以参考manual,如果打开了wrapper的debug信息,则wrapper的启动信息也会打到 ./conf/wrapper.conf中,可以用来定位
wrapper的启动错误,当用户程序可正常启动后,建议关闭wrapper的debug信息,避免干扰。

2、wrapper启动后会在command line界面显示用户进程的进程pid,kill -3 pid,向进程发一个SIGQUIT,可以触发JVM打出全部调用栈,在定位    deadlock的时候比较好用。
原创粉丝点击