本文共 3419 字,大约阅读时间需要 11 分钟。
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的时候比较好用。
转载地址:http://mphii.baihongyu.com/