系统环境:

CentOS 7 X64

JDK1.8

一:

安装jsvc

下载 commons-daemon的源代码包

http://apache.fayea.com//commons/daemon/source/commons-daemon-1.0.15-src.zip

解压之后 cd src/native/unix/

运行:

export CFLAGS=-m64

export LDFLAGS=-m64

注意:这2句代码仅仅有64位系统才须要

./configure

 make

完毕之后,就会在当前文件夹下生成jsvc文件,把它复制到一个文件夹下,这里是 /home/clouder/vs/jsvc 文件夹

然后,把JSVC_HOME增加到环境变量

vim .bashrc

export JSVC_HOME=/home/clouder/vs/jsvc

二:编写java代码

启动类必须实现Daemon接口,然后重写start(), stop()方法就可以

  1. package com.lala;
  2.  
  3. import org.apache.commons.daemon.Daemon;
  4. import org.apache.commons.daemon.DaemonContext;
  5. import org.apache.commons.daemon.DaemonInitException;
  6.  
  7. public class Application implements Daemon
  8. {
  9. MyServer server = null;
  10. public void init(DaemonContext context) throws DaemonInitException,Exception
  11. {
  12. server = new MyServer();
  13. }
  14.  
  15. public void start() throws Exception
  16. {
  17. server.start();
  18. }
  19.  
  20. public void stop() throws Exception
  21. {
  22. server.stop();
  23. }
  24.  
  25. public void destroy()
  26. {
  27. System.exit(0);
  28. }
  29. }

注意:pom.xml里面须要增加例如以下依赖:

  1. <dependency>
  2. <groupId>commons-daemon</groupId>
  3. <artifactId>commons-daemon</artifactId>
  4. <version>1.0.15</version>
  5. </dependency>

三:编写shell脚本

server.sh

  1. #!/bin/bash
  2.  
  3. if [ "$JAVA_HOME" = "" ]; then
  4. echo "Error: JAVA_HOME is not set."
  5. exit 1
  6. fi
  7.  
  8. if [ "$JSVC_HOME" = "" ]; then
  9. echo "Error: JSVC_HOME is not set."
  10. exit 1
  11. fi
  12.  
  13. bin=`dirname "$0"`
  14.  
  15. export MYJETTY_HOME=`cd $bin/../; pwd`
  16.  
  17. MYJETTY_CONF_DIR=$MYJETTY_HOME/conf
  18. MYJETTY_WORK_DIR=$MYJETTY_HOME/work
  19. CLASSPATH="${MYJETTY_CONF_DIR}"
  20.  
  21. for f in $MYJETTY_HOME/lib/*.jar; do
  22. CLASSPATH=${CLASSPATH}:$f;
  23. done
  24.  
  25. LOG_DIR=${MYJETTY_HOME}/logs
  26.  
  27. CLASS=com.lala.Application
  28.  
  29. #jsvc所在的文件夹
  30. DAEMON_HOME=$JSVC_HOME
  31.  
  32. PID=${MYJETTY_WORK_DIR}/myjetty.pid
  33.  
  34. case "$1" in
  35.  
  36. start)
  37.  
  38. $DAEMON_HOME/jsvc -Djava.io.tmpdir=$MYJETTY_WORK_DIR -wait 5000 -pidfile $PID -outfile LOG_DIR/myjetty.out -errfile '&1' -cp $CLASSPATH $CLASS
  39. exit $?
  40.  
  41. ;;
  42.  
  43. stop)
  44.  
  45. $DAEMON_HOME/jsvc -stop -pidfile $PID $CLASS
  46. exit $?
  47. ;;
  48.  
  49. *)
  50.  
  51. echo "Usage jsvc start,stop"
  52. exit 1;;
  53. esac

最后,使用

sh server.sh start启动服务

sh server.sh stop关闭服务

使用commons-daemon启动、关闭java程序的更多相关文章

  1. java程序启动参数-D含义详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt407 java程序启动参数 -D是用来做什么的呢?去查询了一下官方解释: S ...

  2. java的windows自动化-自动运行java程序

    那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...

  3. 使用jvisualvm来远程观察Java程序及jvisualvm插件[转]

    jvisualvm是JDK自带的监控JVM运行状况的工具,利用jvisualvm可以查看JVM的运行.GC情况:线程的运行情况:内存中类及实例的情况等. 使用jvisualvm来远程观察Java程序, ...

  4. Java程序,JVM之间的关系

    java程序是跑在JVM上的,严格来讲,是跑在JVM实例上的.一个JVM实例其实就是JVM跑起来的进程,二者合起来称之为一个JAVA进程.各个JVM实例之间是相互隔离的. 每个java程序都运行于某个 ...

  5. Java 程序该怎么优化?(工具篇)

    程序员:为什么程序总是那么慢?时间都花到哪里去了? 面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢? 工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直 ...

  6. java在进程启动和关闭.exe程序

    /** * @desc 启动进程 * @author zp * @date 2018-3-29 */ public static void startProc(String processName) ...

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

    通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...

  8. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  9. 不错的linux下通用的java程序启动脚本(转载)

    转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...

随机推荐

  1. (Problem 3)Largest prime factor

    The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...

  2. Ural 1197 - Lonesome Knight

    The statement of this problem is very simple: you are to determine how many squares of the chessboar ...

  3. django中上传图片的写法

    view参数 @csrf_exemptdef before_upload_avatar(request):    before = True    return render_to_response( ...

  4. sass玩转颜色总结笔记

    变量: $color:#f00; 1.变浅和加深颜色,sass使用HSL标准来变浅或加深颜色 lighten($color,10%); darken($color,30%);             ...

  5. Security:蠕虫的行为特征描述和工作原理分析

    ________________________ 参考: 百度文库---蠕虫的行为特征描述和工作原理分析 http://wenku.baidu.com/link?url=ygP1SaVE4t4-5fi ...

  6. Hadoop 配置文件简介

    1.core-site.xml文件 这是一个描述集群中NameNode结点的URI-统一资源标识符(包括协议,主机名称,端口号),集群里面的每一台机器都需要知道 NameNode的地址.DataNod ...

  7. Android 判断当前线程是否为主线程

    public static boolean isInMainThread() { return Looper.myLooper() == Looper.getMainLooper(); }

  8. EF+jQueryUI前后端分离设计

    开源项目练习EF+jQueryUI前后端分离设计   最近大家流行把项目开源,我也来玩玩.只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家. 这个项目可以做简单的团队任务系统( ...

  9. Java__jar包的简单操作

    工作需要研究了下jar,这里就举个简单的例子,以helloworld为例吧 1.启动eclipse编写代码: 次步不做赘述 package cn.test.jar; public class Hell ...

  10. WPF(布局)

      WPF编程学习——布局   本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面 ...