博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用apache daemon让java程序在unix系统上以服务方式运行
阅读量:7191 次
发布时间:2019-06-29

本文共 3369 字,大约阅读时间需要 11 分钟。

hot3.png

通过使用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包和源码,下载地址:

源码中包含了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: [java] view plain copy print? package com.jason.jsvc;

import org.apache.commons.daemon.Daemon;

import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException;

/**

  • 2013-6-21

  • Jason */

    public class JsvcTest implements Daemon {

    /* (non-Javadoc)

    • org.apache.commons.daemon.Daemon#destroy() */
      @Override
      public void destroy() {
      // TODO Auto-generated method stub
      System.out.println("JsvcTest destory method...");
      }

    /* (non-Javadoc)

    • 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 [plain] view plain copy print? #!/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...

转载于:https://my.oschina.net/weichou/blog/741773

你可能感兴趣的文章
8.:input表单选择器
查看>>
雄联盟工程师独家分享:如何使开发更有效率
查看>>
学习的原动力
查看>>
自动化测试基础篇--Selenium中JS处理滚动条
查看>>
V4L2 API详解 <二> Camera详细设置【转】
查看>>
自动化动态测试的战略优势
查看>>
css基础知识
查看>>
Java8新特性之三:Stream API
查看>>
python调用jar包
查看>>
【Prince2科普】Prince2的七大原则(5)
查看>>
windows下安装MongoDB和可视化工具Robomongo的使用
查看>>
linux内核挂载文件系统的两种方式
查看>>
30个免费下载高质量精美照片素材的网站
查看>>
Memcached深度分析
查看>>
字符编码
查看>>
【实验7】综合练习
查看>>
“System.FormatException”类型的未经处理的异常在 System.IdentityModel.dll 中发生 其他信息: 十六进制字符串格式无效。...
查看>>
四种方式实现SQLServer 分页查询
查看>>
python爬虫-url
查看>>
[bzoj3531][Sdoi2014]旅行
查看>>