设为首页 收藏本站
查看: 847|回复: 0

[经验分享] 使用apache daemon让java程序在unix系统上以服务方式运行

[复制链接]

尚未签到

发表于 2015-11-13 14:57:42 | 显示全部楼层 |阅读模式
  通过使用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...
  


  


  


  


  


  


  


  


  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-138882-1-1.html 上篇帖子: visualSVN server绿化策略 摆脱两个apache的尴尬 下篇帖子: windows2003单IP下iis与apache共存,asp、php多个网站共同运行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表