Apache Commons Daemon 使用简介
1. 简介
Commons Daemon可以将一个普通的java应用程序作为linux或windows的后台服务,以daemon方式运行。例如Tomcat就是使用这个项目来实现作为Linux和Windows的服务启动/停止的。
它分为两个部分,一部分是用C写的,与操作系统交互,另一部分是用java写的,提供Daemon接口。Apache commons daemon对Win32和Unix平台都有支持,Win32平台使用procrun, Unix平台使用jsvc。本文主要介绍jsvc的安装和使用。
2. 使用
2.1 安装jsvc
首先,下载apache commons daemon的jar包和源码,下载地址:
http://commons.apache.org/proper/commons-daemon/download_daemon.cgi。
开始安装:
#tar -zxvf commons-daemon-1.0.15-src.tar.gz
#cd commons-daemon-1.0.15-src/src/native/unix
#./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已经安装成功。
2.2 编写一个java demo
package com.jason.jsvc;
import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException;
public class JsvcTest implements Daemon {
@Override
public void destroy() {
System.out.println("JsvcTest destory method...");
}
@Override
public void init(DaemonContext ctx) throws DaemonInitException, Exception {
System.out.println("JsvcTest init method..."+ctx.toString());
}
@Override
public void start() throws Exception {
System.out.println("JsvcTest start method...");
}
@Override
public void stop() throws Exception {
System.out.println("JsvcTest stop method...");
}
}
将该demo打包成jscv_test.jar,放至/home/jsvc/app目录。
2.3 编写jsvc脚本
vi /etc/init.d/jsvc
#!/bin/sh
# chkconfig: - 60 50
. /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
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
exit $?
;;
stop)
# Stop Serivce
$DAEMON_HOME/jsvc -stop -pidfile $PID com.jason.jsvc.JsvcTest
exit $?
;;
*)
echo "Usage myjsvc start/stop"
exit 1;;
esac
2.4 为unix添加服务
chkconfig --add jsvc
chkconfig --list | grep jsvc
chkconfig --level 345 jsvc on
2.5 启动和关闭jsvc服务
service jsvc start
service jsvc stop
参考:
1.官网 http://commons.apache.org/proper/commons-daemon/index.html
2.使用教程 http://blog.csdn.net/jason5186/article/details/9146167