系统环境:

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()方法就可以

package com.lala;

import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException; public class Application implements Daemon
{
MyServer server = null;
public void init(DaemonContext context) throws DaemonInitException,Exception
{
server = new MyServer();
} public void start() throws Exception
{
server.start();
} public void stop() throws Exception
{
server.stop();
} public void destroy()
{
System.exit(0);
}
}

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

<dependency>
<groupId>commons-daemon</groupId>
<artifactId>commons-daemon</artifactId>
<version>1.0.15</version>
</dependency>

三:编写shell脚本

server.sh

#!/bin/bash

if [ "$JAVA_HOME" = "" ]; then
echo "Error: JAVA_HOME is not set."
exit 1
fi if [ "$JSVC_HOME" = "" ]; then
echo "Error: JSVC_HOME is not set."
exit 1
fi bin=`dirname "$0"` export MYJETTY_HOME=`cd $bin/../; pwd` MYJETTY_CONF_DIR=$MYJETTY_HOME/conf
MYJETTY_WORK_DIR=$MYJETTY_HOME/work
CLASSPATH="${MYJETTY_CONF_DIR}" for f in $MYJETTY_HOME/lib/*.jar; do
CLASSPATH=${CLASSPATH}:$f;
done LOG_DIR=${MYJETTY_HOME}/logs CLASS=com.lala.Application #jsvc所在的文件夹
DAEMON_HOME=$JSVC_HOME PID=${MYJETTY_WORK_DIR}/myjetty.pid case "$1" in start) $DAEMON_HOME/jsvc -Djava.io.tmpdir=$MYJETTY_WORK_DIR -wait 5000 -pidfile $PID -outfile LOG_DIR/myjetty.out -errfile '&1' -cp $CLASSPATH $CLASS
exit $? ;; stop) $DAEMON_HOME/jsvc -stop -pidfile $PID $CLASS
exit $?
;; *) echo "Usage jsvc start,stop"
exit 1;;
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. struts2--配置文件中使用通配符

    struts2的配置文件是 struts.xml.. 在这个配置文件里面可以使用通配符..其中的好处就是,大大减少了配置文件的内容..当然,相应付出的代价是可读性.. 使用通配符的原则是 约定高于配置 ...

  2. 【C#、csharp】HTTPGET,POST请求

    HTTP定义了与服务器交互的不同方法,基本方法有GET,POST,PUT,DELETE,分别对于查,该,增,删.一般情况下我们只用到GET和POST,其他两种都也可以用GET和POST来实现,很多浏览 ...

  3. Python字典处理技巧

    从字典中取值(不想由于搜索的键不存在而异常) 解决方法: 使用字典的get方法 (get方法只读取字典的值而不会去修改字典) d={'key':'value'} print d.get('key',' ...

  4. VC++的内联汇编

    1.移植性差,假设是软件项目建议不要用.假设希望一段程序仅在单一设备上执行而且效率极高,能够使用内联汇编. 比方.单片机开发. 2. ......持续更新中. .... .

  5. 二叉树的前序和中序得到后序 hdu1710

    今天看学长发过来的资料上面提到了中科院机试会有一个二叉树的前序中序得到后序的题目.中科院的代码编写时间为一个小时,于是在七点整的时候我开始拍这个题目.这种类型完全没做过,只有纸质实现过,主体代码半个小 ...

  6. JPA相关知识点滴--持续更新中.....

    Java 持久化(JPA)  •Java EE 5 在EJB 3.0 中包含JPA 1.0 •参考实现:TopLink Essentials •Java EE 6 包含JPA 2.0 •参考实现:Ec ...

  7. Oracle查看表空间使用情况

     查看表空间使用情况 select upper(f.tablespace_name) "表空间名",        d.tot_grootte_mb "表空间大小(m ...

  8. Mac下显示隐藏文件 以及修改 hosts文件内容

    修改hosts 文件内容: 进入etc 文件夹,找到hosts 文件,把该文件复制出来,修改完里面的内容后,先把etc中的hosts 文件删除,然后在把修改后的文件脱机去 可能需要管理员的密码,你输入 ...

  9. 深入理解 Spring 事务原理【转】

    本文转自码农网 – 吴极心原创  连接地址:http://www.codeceo.com/article/spring-transactions.html 一.事务的基本原理 Spring事务的本质其 ...

  10. iOS - 单例传值 (一)

    点击打开链接    iOS - 单例传值 (二) 单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象 你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址, ...