让Java程序作为linux的Daemon后台运行 和 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动

来源:互联网 发布:java游戏开发培训 编辑:程序博客网 时间:2024/05/01 18:22

一、让Java程序作为linux的Daemon后台运行

因为需要对网络环境进行监控,做了个Java程序在linux服务器上运行。但是每次重新启动的时候都要手动的运行,这样就不太现实。所以想到把Java程序做成像Windows的系统服务那样,开机就会自动在后台运行。以前使用过一个工具http://javaservice.objectweb.org/,可以把Java程序注册成为Windows的系统服务,而且使用起来很简单,但是遗憾的是该工具不能注册linux的后台服务。所以不得不另外寻找工具。

   最后找到了JavaService Wrapper(http://wrapper.tanukisoftware.org/doc/english/introduction.html),该工具能在很多中平台下面注册为系统服务(查看支持平台)。该工具使用方法有三种模式,我用的是第一种WrapperSimpleApp帮助类,另外的两种方式都需要在原来的程序上进行适当的编码。下面就用我的程序NetWatchDog为例子说明下大概的配置步骤。(其实文档中已经用Jboss进行了演示)

1.建立一个目录名为NetWatchDog,并在该目录下建立bin,lib,conf,logs目录。以下把NetWatchDog目录称为$DOG_HOME。

2.把下载来的文件解压,把$WRAPPER_HOME/bin/wrapper,$WRAPPER_HOME/src/bin/sh.script.in文件copy到$DOG_HOME/bin目录中。

3.把sh.script.in文件该名为你的服务名称,这里改为NetWatchDog。

4.编辑NetWatchDog,把Application的相关信息改为如下:

APP_NAME="NetWatchDog"APP_LONG_NAME="NetWatchDog Application"

5.把你的程序的打包成jar文件,拷贝到$DOG_HOME/lib目录下,并把$WRAPPER_HOME/lib/libwrapper.so,$WRAPPER_HOME/lib/wrapper.jar文件也拷贝到$DOG_HOME/lib目录下面。

6.这步比较重要是成败的关键,把$WRAPPER_HOME/conf/wrapper.conf文件拷贝到$DOG_HOME/conf目录下(文档上面说的是wrapper.conf.in文件,但是我下载来的文件就是wrapper.conf,所以步需要改名的)。

7.编辑wrapper.conf文件:

#java命令的位置wrapper.java.command=%JAVA_HOME%/bin/java#wrapper的主类wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp#java classpathwrapper.java.classpath.1=../lib/wrapper.jarwrapper.java.classpath.2=%JAVA_HOME%/jre/lib/ext/log4j-1.2.13.jarwrapper.java.classpath.3=%JAVA_HOME%/jre/lib/ext/activation.jarwrapper.java.classpath.4=%JAVA_HOME%/jre/lib/ext/commons-email-1.0.jarwrapper.java.classpath.5=%JAVA_HOME%/jre/lib/ext/mail.jarwrapper.java.classpath.6=../lib/NetWatchDog.jar#你的程序的主类,将作为wrapper的参数wrapper.app.parameter.1=qiya.deng.main.Main

8.这样基本就大功告成了,现在可以运行命令./NetWatchDog  start,如果提示权限不够就用chmod 755 NetWatchDog命令改变权限。如果没出现错误提示,这样基本上就正确了。

 

 

二、使用Java Service Wrapper将java程序作为linux服务并且开机自动启动

 

 

下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。 

1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.3.2), 解压。 
http://wrapper.tanukisoftware.org/ 
复制src/bin/sh.script.in/opt/tianlong/bin目录,重命名为QueueTest

复制wrapper/bin目录下的wrapper文件/opt/tianlong/bin目录 

复制src/conf/wrapper.conf.in/opt/tianlong/conf目录,重命名为wrapper.conf 

复制src/lib/lib目录下3个文件到/opt/tianlong/lib目录 

wrapper.so 
wrapper.jar 
wrappertest.jar

2、修改/opt/tianlong/bin/QueueTest文件 
APP_NAME="QueueTest" //注意这里,这里的应用服务名称应该与第1步的/opt/tianlong/bin里面的QueueTest名字相同
APP_LONG_NAME="QueueTest Application Server" 
WRAPPER_CMD="./wrapper" //这里的路径要写正确,这里是对应了/opt/tianlong/bin/wrapper这个文件
WRAPPER_CONF="../conf/wrapper.conf" //这里的路径要写正确,这里是对应了/opt/tianlong/conf/wrapper.conf这个文件
赋予执行权限 
chmod 775 /opt/testapp/bin/SocketServer 
chmod 775 /opt/testapp/bin/wrapper 

3、修改/opt/tianlong/conf/wrapper.conf文件 
wrapper.java.command=/usr/java/jdk1.6.0_07/bin/java //这里是写java的安装路径
使用WrapperStartStopApp,这样可以通过命令带start/stop来启动/停止程序。
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp 
#这里添加你用到的jar包文件,从1..n你自己全写上吧,不过wrapper是必须的 
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/tianlong.jar //这里表示将打包好的tianlong.jar放在/opt/tianlong/lib这个文件夹中
wrapper.java.classpath.3=../lib/asterisk-java-0.3.jar
wrapper.java.classpath.4=../lib/mysql-connector-java-5.1.6-bin.jar
wrapper.java.classpath.5=/usr/java/jdk1.6.0_07/lib/dt.jar
wrapper.java.classpath.6=/usr/java/jdk1.6.0_07/lib/tools.jar
wrapper.java.classpath.7=../cofig.properties //这个是应用程序用到的配置文件。如果使用的应用程序需要用到配置,就需要把这个文件包含进来
wrapper.java.library.path.1=../lib //这里是表示wrapper使用到的jar包的路径,一般默认即可,绝对路径是:/opt/tianlong/lib
#这个就是你自己可执行程序的主类(MainClass),一般来说,就是包含public static void main的那个类 
wrapper.app.parameter.1=tianlong.QueueTest
wrapper.app.parameter.2=1 
wrapper.app.parameter.3=true 
wrapper.app.parameter.4=tianlong.QueueTest
wrapper.app.parameter.5=true 
wrapper.app.parameter.6=1 
wrapper.app.parameter.7=stop 

4、让QueueTest开机自动运行 
ln -s /opt/tianlong/bin/QueueTest/etc/init.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc0.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc1.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc2.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc3.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc4.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc5.d/QueueTest
ln -s /opt/tianlong/bin/QueueTest /etc/rc6.d/QueueTest 

5、测试 执行命令:service QueueTest start|stop|restart|status 
程序运行时,Java Service Wrapper在/opt/tianlong/bin/目录下产生wrapper.log日志, 
STATUS | wrapper| 2009/02/25 17:04:01 | --> Wrapper Started as Daemon
STATUS | wrapper| 2009/02/25 17:04:01 | Java Service Wrapper Community Edition 3.3.2
STATUS | wrapper| 2009/02/25 17:04:01 | Copyright (C) 1999-2009 Tanuki Software, Ltd.All Rights Reserved.
STATUS | wrapper| 2009/02/25 17:04:01 | http://wrapper.tanukisoftware.org
STATUS | wrapper| 2009/02/25 17:04:01 | 
STATUS | wrapper| 2009/02/25 17:04:01 | Launching a JVM...
INFO | jvm 1 | 2009/02/25 17:04:02 | WrapperManager: Initializing...

出现上面这个就表示已经配置成功了。如果配置有错误的话,在wrapper.log里面会有提示。
同时,如果程序配置成功的并且启动的话,在/opt/tianlong/bin里面会有一个QueueTest.pid。

附目录结构
/opt/tianlong/
cofig.properties
/opt/tianlong/bin
QueueTest
wrapper
| wrapper.log(程序运行时自动产生)
/opt/tianlong/conf
wrapper.conf
/opt/tianlong/lib
| libwrapper.so
| wrapper.jar
| tianlong.jar
| mysql-connector-java-5.1.6-bin.jar
| asterisk-java-0.3.jar

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq音乐听过的歌单找不到了怎么办 快手开直播前置摄像头太暗怎么办 小米手机帐号绑定无法侠用怎么办 用交易猫买完游戏账号被骗了怎么办 一个华为账号有两个游戏账号怎么办 加密u盘电脑上打开空怎么办 国网加密u盘电脑打开为空怎么办 足球竞彩软件下架后里面的钱怎么办 竞彩足球提现不到账怎么办 竞彩足球投注后输了怎么办 英雄联盟鼠标箭头右键点不了怎么办 上古卷轴5数值修改错了怎么办 小时候打针把屁股脂肪打扁了怎么办 大繁盛满腹市场2对话时闪退怎么办 月经来了一个月了还不停怎么办 对办公室的异性老师产生好感怎么办 上古卷轴5任务NPC老打我怎么办 1岁半宝宝走路内八字怎么办 最近几个月例假周期都25天怎么办 从pr导出的视频大小不一样怎么办 合作医疗收据丢了不给报销怎么办 沧州新生医院—老人腹胀了该怎么办 内痔疮术后一个月吃了点辣椒怎么办 肛周脓肿手术后大便干怎么办 月经半个月了还没干净怎么办 房东出租违建房不退房租怎么办 上海公租房住满5年后怎么办 监狱对死缓犯人延长转为无期怎么办 手机号码办理的宽带不想要了怎么办 朋友诈骗罪被关看守所了该怎么办 打架被拘留家里有孩子没人看怎么办 刑事拘留满37天给逮捕了怎么办 因打架被拘留十五天释放后会怎么办 犯罪人在拘留所生了小孩怎么办 我申请了进京证更换车辆怎么办 丈夫去世前想把财产留给妻子怎么办 假货中通代收货款发现是假货怎么办 注册志愿者时身份证被使用该怎么办 双眼皮贴贴的皮肤送了怎么办? 满60岁社保末满十五年怎么办 眼角膜少了一块怎么办应该吃什么