java wrapper linux_Java Service Wrapper linux 服务 java 自启动

测试通过:

以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。

在tianlong目录下:

mkdir bin conf lib 创建3个目录

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

1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.3.2), 解压。

http://wrapper.tanukisoftware.org/ 下载Community版本

解压出来:

复制src\bin\sh.script.in到/opt/tianlong/bin目录,重命名为QueueTest

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

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

复制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/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.classpath.8=../              //添加tianlong根目录应用于非jar包在根目录xx.class程序

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

# 设置log文件最大值

wrapper.logfile.maxsize=5

#设置log文件最多个数

wrapper.logfile.maxfiles=10

设置允许服务自动启动  针对win

wrapper.ntservice.starttype=AUTO_START

4、让QueueTest开机自动运行方法1:

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

让QueueTest开机自动运行方法2:(这里我用centos系统采用chkconfig方式管理)

vi bin/QueueTest 第二行开始增加

#kconfig: 3 98 15      //必须

#description:Java Ds   //必须

保存退出

ln -s /opt/tianlong/bin/QueueTest /etc/rc.d/init.d/QueueTest

chkconfig --add QueueTest

chkconfig --level 35 QueueTest on

5、测试 执行命令:service QueueTest start|stop|restart|status 程序运行时,

Java Service Wrapper在/opt/tianlong/bin/目录下产生wrapper.log日志(日志路径可在conf/wrapper.conf里修改)

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

---------------------------------------------------------------------------

用于非java程序通用守护进程代码:

#!/bin/sh

#-----------------------------------

# 函数: CheckProcess

# 功能: 检查一个进程是否存在

# 参数: $1 --- 要检查的进程名称

# 返回: 如果存在返回0, 否则返回1.

#---------------------------------------

CheckProcess()

{

# 检查输入的参数是否有效

if [ "$1" = "" ];

then

echo "input empty"

return 1

fi

#$PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动

sleep 3

PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`

if [ $PROCESS_NUM -eq 1 ];

then

return 0

else

return 1

fi

}

# 检查ds实例是否已经存在

while [ 1 ] ;

do CheckProcess "ds"

CheckQQ_RET=$?

if [ $CheckQQ_RET -eq 1 ];

then

sleep 10

# echo "ds need to restart"

killall 程序名字

路径+程序名 &

fi

sleep 3

done &

在centos,fC4

ps -ef 无效改ps -e 好了

/etc/rc.local

nohup xxxx/check.sh &

不同用户运行:

su - username -c "nohup xxxx/check.sh &"

sudo -u username xxxx/check.sh &   // 如果不生效需修改visudo添加权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Serializable和Parcelable

Serializable&#xff08;接口&#xff09;通过intent 的bundle传递参数Bundle bundle new Bundle(); bundle.putSerializable(IntentKeys.IMG_ARR_ENVIR_IMG, mArrListEnvir_img); intent.putExtras(bundle);mListEnvir (ArrayList<EnvirImg>) (bundle .ge…

如何为 .NET Core 3.0 中 WPF 配置依赖注入 ?

咨询区 user842818&#xff1a;我非常熟悉 ASP.NET Core 和它开箱即用的依赖注入支持&#xff0c;当 Controller 需要依赖注入时&#xff0c;可以在 构造函数 中以参数的形式来实现&#xff0c;这个IOC的理念相当好&#xff0c;我想把它带到 WPF 中&#xff0c;当我同样以构造函…

百度家电行业报告摘录

上图反映了关注家电信息的网民在百度频道的活跃情况。很明显&#xff0c;百度贴吧、百度图片和百度知道是网民最活跃的频道&#xff0c;特别是百度贴吧&#xff0c;有超过四分之一的检索量都来自于百度贴吧。百度有不少以家电品牌或产品为主题的贴吧&#xff0c;比如海尔吧、TC…

如何识别能把桥压塌的大车?快看!能救命!

全世界只有3.14 % 的人关注了青少年数学之旅2019年10月10日晚6:10左右&#xff0c;江苏无锡市北环路附近一高架桥出现桥面侧翻&#xff0c;经现场初步勘测&#xff0c;桥下被压小车3辆&#xff08;其中一辆系停放车辆&#xff0c;无人&#xff09;。经搜救确认&#xff0c;事故…

如何用outlook express 收发邮件

一&#xff0e;创建用户1.打开Outlook express软件&#xff0c;单击“工具”选项&#xff0c;选择“帐户”选项。2.单击“添加”按钮&#xff0c;选择“邮件”选项。3.在“连接向导”中&#xff0c;输入发件人姓名&#xff0c;在对方收到邮件后&#xff0c;发件人姓名将会显示在…

java虚拟机 山寨机_十年前的山寨机居然有系统?没错,还是纯国产的

文丨太平洋数码苍茫的天涯是我的爱&#xff0c;绵绵的青山脚下花正开&#xff0c;什么样的节奏是最呀最摇摆……你是我天边最美的云彩&#xff0c;让我用心把你留下来(留下来)……不知道大家是否还记得这段熟悉的旋律&#xff0c;总之小编我今天再次回听这首歌的时候身体依然会…

高人写的浙大简史(转)

1997年&#xff0c;浙大100岁&#xff0c;虽人到中年&#xff0c;且老伴在1952年便已与之离婚&#xff0c;但大儿子玉泉已长大成人&#xff0c;在工厂从事技术工作&#xff0c;表现优秀&#xff1b;二儿子之江右腿瘫痪行动不便&#xff0c;几乎无劳动能力&#xff0c;靠其大哥供…

dotnet中的counters说明(一)

在dotnet中&#xff0c;常用的收集指标有&#xff1a;System.Runtime 计数器Microsoft.AspNetCore.Hosting计数器Microsoft.AspNetCore.Http.Connections计数器Microsoft-AspNetCore-Server-Kestrel计数器System.Net.Http计数器(>.NET5可用)System.Net.NameResolution计数器…

当才华还撑不起梦想时,你应该静下心来看这些

全世界只有3.14 % 的人关注了青少年数学之旅在工作之余&#xff0c;我们大量的碎片时间被手机占据。无意识的刷手机打发无聊&#xff0c;不如有趣又高品质的积累。我们特意精选了在不同领域的几个高品质公众号代表&#xff0c;希望让你在快乐打发闲暇时光的同时&#xff0c;也能…

统一威胁管理

回顾2004年以及已经走过一半的2005年&#xff0c;国内信息安全市场的发展有一些明显的轨迹可循。首先是技术创新开始受到市场的热烈回应&#xff0c;这说明国内的信息安全用户已经对产品价值进行正确的认知。另一个趋势是用户的安全需求在从安全产品向整体解决方案转移。广大用…

如何使用Git

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 廖雪峰的博客。 从零起步的Git教程&#xff0c;让你无痛苦上手世界上最流行的分布式版本控制系统Git&#xff01; 既然号称史上最浅显易懂的Git教程&#xff0c;那这个教程有什么让你怦然…

java中static x 5_java中static作用详解

static表示“全局”或者“静态”的意思&#xff0c;用来修饰成员变量和成员方法&#xff0c;也可以形成静态static代码块&#xff0c;但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说&#xff0c;它不依赖类特定的实例&…

.net core ——微服务内通信Thrift和Http客户端响应比较

1、Benchmark介绍wiki中有定义&#xff1a;基准测试是运行计算机程序&#xff0c;一组程序或其他操作的行为&#xff0c;以便评估对象的相对性能&#xff0c;通常是通过对其运行许多标准测试和试验。目前许多成熟的github开源项目&#xff0c;均采用Benchmark测试结果作为性能依…

今日最佳:你爸爸给你取名的时候。。。

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频源于枫潇潇兮&#xff09;

Discuz添加自定义模板广告

在做Discuz中广告的时候碰到个大问题&#xff0c;现在我需要做一个轮播的通屏广告位&#xff0c;调用广告图片的代码应该是以下代码&#xff1a;<ul> <li style"background:url(图片地址) no-repeat center top;"><a href"#"></a…

kafka偏移量保存到mysql里_Kafka 新版消费者 API(二):提交偏移量

1. 自动提交最简单的提交方式是让消费者自动提交偏移量。如果 enable.auto.commit 被设为 true&#xff0c;那么每过 5s&#xff0c;消费者会自动把从 poll() 方法接收到的最大偏移量提交上去。提交时间间隔由 auto.commit.interval.ms 控制&#xff0c;默认值是5s。消费者每次…

我居然手写了Spring框架

手写完了刚参加工作那会接触java还是用的struct的时代&#xff0c;后面在SSH火爆时代的时候我转战.net,多年之后公司转java技术栈已经是Spring的天下&#xff0c;源码嚼了很多遍于是很想尝试把这套东西用在.net平台上。社区有个Spring.net项目已经多年不维护了&#xff0c;而且…

下班以后看什么,决定你人生的高度

全世界只有3.14 % 的人关注了青少年数学之旅王小波说&#xff1a;我活在世上&#xff0c;无非想要明白些道理&#xff0c;遇见些有趣的事&#xff0c;倘能如我所愿&#xff0c;我的一生就算成功。你的圈子将决定你的人生。每一位对事物都有着独特的态度让你成为一个有趣的人。今…

Mahout的taste推荐系统里的几种Recommender分析

Taste简介 看自:http://blog.csdn.net/zhoubl668/article/details/13297583Mahout 是apache下的一个java语言的开源大数据机器学习项目&#xff0c;与其他机器学习项目不同的是&#xff0c;它的算法多数是mapreduce方式写的&#xff0c;可以在hadoop上运行&#xff0c;并行化处…

[2007最后一博]Url地址重写,利用HttpHander手工编译页面并按需生成静态HTML文件...

很多朋友可能都讨论过ASP.NET中生成HTML的方法了&#xff0c;有按照模板用IO方法写文件 有在404错误页面内生成HTML的&#xff0c;有在Render内保存页面输出到HTML文件的。 今天我发一个配合Url重写利用HttpHander手工编译.aspx页面方法。 HTML文件的方法&#xff0c;可按需、“…