• 使用apache daemon让java程序在unix系统上以服务方式运行


    通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行。

    当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的第三方jar目录,由wrapper统一加载,很方便。详细使用方法见“wrapper在unix下的使用”。


    apache daemon的安装与使用

    1、运行环境:

    unix 64bit

    jre 1.6.x

    apache commons daemon 10.15,daemon较低的版本在安装上会有些差别,如:无法在64位的unix系统上找到libcap*.so文件等

    而10.15版本在这方面增加了一些校验,使用起来比较方便。


    2、安装jsvc

    jsvc是apache commons daemon自带的,通过jsvc我们才可以达到java程序在unix系统上以service的方式运行,如:tomcat

    首先,我们先下载apache commons daemon jar包和源码,下载地址:

    http://commons.apache.org/proper/commons-daemon/download_daemon.cgi

    源码中包含了jsvc和一些demo。


    开始安装:

    #cd /home/jsvc/

    #tar zxvf commons-daemon-1.0.15-src.tar.gz

    #cd commons-daemon-1.0.15-src/native/unix

    #chmod 755 ./support/buildconf.sh

    #./support/buildconf.sh

    ./support/buildconf.sh: configure script generated successfully


    # ./configure --with-java=/usr/java/jdk1.6.0_35

    .....

    *** All done ***

    Now you can issue "make"

    #make

    至此jsvc已经安装成功,接下来我们编写一个java app


    3、编写一个java demo:

    package com.jason.jsvc;
    
    import org.apache.commons.daemon.Daemon;
    import org.apache.commons.daemon.DaemonContext;
    import org.apache.commons.daemon.DaemonInitException;
    
    /**
     * @date 2013-6-21
     * @author Jason
     */
    public class JsvcTest implements Daemon {
    
    	/* (non-Javadoc)
    	 * @see org.apache.commons.daemon.Daemon#destroy()
    	 */
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    		System.out.println("JsvcTest destory method...");
    	}
    
    	/* (non-Javadoc)
    	 * @see org.apache.commons.daemon.Daemon#init(org.apache.commons.daemon.DaemonContext)
    	 */
    	@Override
    	public void init(DaemonContext ctx) throws DaemonInitException, Exception {
    		// TODO Auto-generated method stub
    		System.out.println("JsvcTest init method..."+ctx.toString());
    	}
    
    	/* (non-Javadoc)
    	 * @see org.apache.commons.daemon.Daemon#start()
    	 */
    	@Override
    	public void start() throws Exception {
    		// TODO Auto-generated method stub
    		System.out.println("JsvcTest start method...");
    	}
    
    	/* (non-Javadoc)
    	 * @see org.apache.commons.daemon.Daemon#stop()
    	 */
    	@Override
    	public void stop() throws Exception {
    		// TODO Auto-generated method stub
    		System.out.println("JsvcTest stop method...");
    	}
    
    
    }
    

    将该demo打包成jscv_test.jar,并连同commons-daemon-10.15.jar一起放到:/home/jsvc/app/目录下备用。


    4、编写jsvc脚本

    vi /etc/init.d/jsvc

    #!/bin/sh
    
    
    
    #
    
    # chkconfig: - 60 50
    
    # description: test a daemon.
    
    # processname: jsvc
    
    # Source function library.
    
    . /etc/rc.d/init.d/functions
    
    RETVAL=0
    prog="jsvc"
    JAVA_HOME=/usr/java/jdk1.6.0_35
    APP_HOME=/home/jsvc/app
    
    #jsvc所在的目录
    DAEMON_HOME=/home/jsvc/native/unix
    
    APP_USER=root
    TMP_DIR=/home/jsvc/app/tmp
    PID=/home/jsvc/app/jsvc_stat.pid
    CLASSPATH=$CLASSPATH:/home/jsvc/app/jsvc_test.jar:/home/jsvc/app/commons-daemon-1.0.15.jar
    
    
    case "$1" in
    
    start)
    
    #
    
    # Start Serivce
    
    #
    
    $DAEMON_HOME/jsvc -user $APP_USER -home $JAVA_HOME -Djava.io.tmpdir=$TMP_DIR -wait 5000 -pidfile $PID -outfile $APP_HOME/log/jsvc.out -errfile '&1' -cp $CLASSPATH com.jason.jsvc.JsvcTest
    
    #
    
    # To get a verbose JVM
    
    #-verbose 
    
    # To get a debug of jsvc.
    
    #-debug 
    
    exit $?
    
    ;;
    
     
    
    stop)
    
    #
    
    # Stop Serivce
    
    #
    
    $DAEMON_HOME/jsvc -stop -pidfile $PID com.jason.jsvc.JsvcTest
    
    exit $?
    
    ;;
    
     
    
    *)
    
    echo "Usage myjsvc start/stop"
    
    exit 1;;
    
    esac

    5、为unix添加服务

    chmod 777 /etc/init.d/jsvc

    chkconfig --add jsvc

    chkconfig --list | grep jsvc

    chkconfig --level 345 jsvc on


    6、启动与关闭jsvc服务

    service jsvc start

    service jsvc stop


    查看脚本中指定的日志目录,会发现一些日志输出:

    JsvcTest init method...org.apache.commons.daemon.support.DaemonLoader$Context@6d9efb05
    JsvcTest start method...
    JsvcTest stop method...
    JsvcTest destory method...











  • 相关阅读:
    语音激活检测(VAD)--前向神经网络方法(Alex)
    语音信号处理基础
    MySQL死锁系列-插入语句正常,但是没有插入成功
    关于wx.getProfile和wx.login获取解密数据偶发失败的原因
    指针访问数组元素
    libev 源码解析
    leveldb 源码--总体架构分析
    raft--分布式一致性协议
    使用springcloud gateway搭建网关(分流,限流,熔断)
    爬虫
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3149583.html
Copyright © 2020-2023  润新知