使用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包 ...
随机推荐
- ubuntu中出现警告:Gtk-WARNING**: 无法在模块路径中找到主题引擎:“pixmap”
版本 ubuntu12.04 上一篇中提到使用中文输入法,但是我在使用的时候发现当我启动IBus的时候出现了警告,如图 这个如何是好呢? 最终万能的度娘告诉我这么解决 故障原因: gtk引擎出现了故障 ...
- 不直接访问远程的数据库,而是通过中间件(专业DBA的博客)
建议不直接访问远程的数据库,而是通过中间件. 或者找到好的加密方式.http://blog.csdn.net/sqlserverdiscovery/article/details/8068318 在S ...
- swift 关于 toolbar 学习笔记
import UIKit class ViewController: UIViewController { @IBOutlet weak var toolBar: UIToolbar! @IBOutl ...
- Objective-C KVC 自己主动转换类型研究
## Objective-C KVC 自己主动转换类型研究 apple非常厚道,kvc的时候帮我们做了一些类型转换,规律贴出来,给大伙參考參考 @interface Entity : NSObject ...
- HDU1878 欧拉回路 - from lanshui_Yang
Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input 测试输入包含若干测试用例.每个 ...
- 两个activity之间的数据传递
1.清单文件第二个activity<activity android:name="com.example.twodatapass.ResultActivity" androi ...
- [转]Centos 6.5 优化 一些基础优化和安全设置
关于CentOS服务器的优化下文作为参考. 本文 centos 6.5 优化 的项有18处: 1.centos6.5最小化安装后启动网卡2.ifconfig查询IP进行SSH链接3.更新系统源并且升级 ...
- IOS_Note
关键字:可以搜索这些关键字找到具体内容 退回输入键盘.CGRect.CGPoint & CGSize.设置透明度.设置背景色.自定义颜色. 竖屏.横屏.状态栏高 (显示时间和网络状态). 导 ...
- C++ vs.net设置UTF8字符
1.将main.cpp改成utf-8编码,方法是点击main.cpp,然后选择菜单文件->高级保存选项.[所有源码都要转换成uft-8] 2.在你的main函数里,设置如下代码,完美解决qt5的 ...
- Linux笔记——linux下的语音合成系统
1.festival 安装:sudo apt-get install festival 使用: (SayText "Hello!") 2. espeek(ubuntu 自带) # ...