1、JSVC简介
Apache基金会会common(类似于guava)项目下的项目
2、为什么要使用JSVC?
- java应用增加一种启动方式 (Java的缺点:只能用main方法启动)
- 应用能使用1024以下端口(为啥tomcat可以指定端口)
- 系统重启,jsvc启动的应用也会重启
- 其它优点待发现
3、JSVC使用准备
下载、安装、编译成可执行文件jsvc、配置PATH变量
1 | 下载 | http://commons.apache.org/proper/commons-daemon/jsvc.html |
2 | 安装 | commons-daemon-1.2.4-src.tar |
3 | 编译成可执行文件jsvc | |
4 | 配置PATH变量 | export PATH=$PATH:/usr/java |
4、JSVC使用
实现Daemon接口
jsvc启动脚本
#!/bin/bash if [ "`ps -ef |grep 'loan-xxx-service'|grep jsvc|grep -v grep`" ];then if [ -f "${APP_HOME}/bin/pids/loan-xxx-service.pid" ];then for i in "${APP_HOME}"/lib/*.jar MAINCLASS="$MAINCLASS":"${APP_HOME}/lib" if [ ! "$JAVA_HOME" ];then jsvc -home $JAVA_HOME -cp $MAINCLASS -outfile ${APP_HOME}/logs/loan-xxx-service.log -errfile ${APP_HOME}/logs/loan-xxx-service.err -pidfile ${APP_HOME}/bin/pids/loan-xxx-service.pid -Ddisconf.conf=${APP_HOME}/conf/disconf.properties -Dlog4j.configurationFile=${APP_HOME}/conf/log4j2.xml -server -Xms1024m -Xmx1024m -Xmn390m -Xss256k -XX:MaxMetaspaceSize=256m -Xss256k -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=70 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSScavengeBeforeRemark -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintFlagsFinal -Xloggc:${APP_HOME}/logs/gc.log.`date +%Y%m%d.%H%M%S` -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${APP_HOME}/logs/dump_core_pid%p.hprof -XX:ErrorFile=${APP_HOME}/logs/hs_err_pid%p.log com.yusys.loan.common.bootstrap.ServiceDaemon if [ $? -ne 0 ]; then |
5、JSVC原理简介
Jsvc使用3个进程:启动进程、控制器进程和受控进程。受控制的进程也是主java线程,如果JVM崩溃,控制器将在下一分钟重新启动它。