使用commons-daemon启动、关闭java程序
系统环境:
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程序的更多相关文章
- java程序启动参数-D含义详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt407 java程序启动参数 -D是用来做什么的呢?去查询了一下官方解释: S ...
- java的windows自动化-自动运行java程序
那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...
- 使用jvisualvm来远程观察Java程序及jvisualvm插件[转]
jvisualvm是JDK自带的监控JVM运行状况的工具,利用jvisualvm可以查看JVM的运行.GC情况:线程的运行情况:内存中类及实例的情况等. 使用jvisualvm来远程观察Java程序, ...
- Java程序,JVM之间的关系
java程序是跑在JVM上的,严格来讲,是跑在JVM实例上的.一个JVM实例其实就是JVM跑起来的进程,二者合起来称之为一个JAVA进程.各个JVM实例之间是相互隔离的. 每个java程序都运行于某个 ...
- Java 程序该怎么优化?(工具篇)
程序员:为什么程序总是那么慢?时间都花到哪里去了? 面试官:若你写的 Java 程序,出现了性能问题,该怎么去排查呢? 工欲善其事必先利其器,为你呈上一箩筐性能优化工具,必有一款满足你,废话不多说,直 ...
- java在进程启动和关闭.exe程序
/** * @desc 启动进程 * @author zp * @date 2018-3-29 */ public static void startProc(String processName) ...
- 使用apache daemon让java程序在unix系统上以服务方式运行
通过使用apache_commons_daemon,可以让Java程序在unix系统上以服务器的方式运行. 当然,通过wrapper也是可以达到这样的目的,wrapper还可以指定java应用中用到的 ...
- 不错的linux下通用的java程序启动脚本
不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...
- 不错的linux下通用的java程序启动脚本(转载)
转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包 ...
随机推荐
- (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 ...
- Ural 1197 - Lonesome Knight
The statement of this problem is very simple: you are to determine how many squares of the chessboar ...
- django中上传图片的写法
view参数 @csrf_exemptdef before_upload_avatar(request): before = True return render_to_response( ...
- sass玩转颜色总结笔记
变量: $color:#f00; 1.变浅和加深颜色,sass使用HSL标准来变浅或加深颜色 lighten($color,10%); darken($color,30%); ...
- Security:蠕虫的行为特征描述和工作原理分析
________________________ 参考: 百度文库---蠕虫的行为特征描述和工作原理分析 http://wenku.baidu.com/link?url=ygP1SaVE4t4-5fi ...
- Hadoop 配置文件简介
1.core-site.xml文件 这是一个描述集群中NameNode结点的URI-统一资源标识符(包括协议,主机名称,端口号),集群里面的每一台机器都需要知道 NameNode的地址.DataNod ...
- Android 判断当前线程是否为主线程
public static boolean isInMainThread() { return Looper.myLooper() == Looper.getMainLooper(); }
- EF+jQueryUI前后端分离设计
开源项目练习EF+jQueryUI前后端分离设计 最近大家流行把项目开源,我也来玩玩.只是开源公司项目不好,小弟只好从公司项目经验上另外弄出一套练习开源给大家. 这个项目可以做简单的团队任务系统( ...
- Java__jar包的简单操作
工作需要研究了下jar,这里就举个简单的例子,以helloworld为例吧 1.启动eclipse编写代码: 次步不做赘述 package cn.test.jar; public class Hell ...
- WPF(布局)
WPF编程学习——布局 本文目录 1.布局简介 2.面板(Panel) 3.视图框(Viewbox) 4.滚动视图控件(ScrollViewer) 5.公共布局属性 1.布局简介 应用程序界面 ...