将java程序成为linxu的系统服务

在分布式环境开发中经常会使用socket,或者使用rmi来对外提供服务,常用的办法是将写一个java代码,然后部署到服务器上,但是问题来了。如何将这个服务成为一个可靠的系统服务,不会应为风吹草动就挂了,那就不好了。

所以想到使用apache commons 下面的daemon框架来充当守护进程。首先需要在系统中安装jsvc工具具体操作方法这里不作详细说明,请查看 http://commons.apache.org/daemon/jsvc.html

最后jsvc安装成功之后需要有执行 jsvc -help 会显示以下内容:

Python代码

  1. ./jsvc -help
  2. Usage: jsvc [-options] class [args…]
  3. Where options include:
  4. -help | –help | -?
  5. show this help page (implies -nodetach)
  6. -jvm <JVM name>
  7. use a specific Java Virtual Machine. Available JVMs:
  8. ‘client’ ‘server’
  9. -client
  10. use a client Java Virtual Machine.
  11. -server
  12. use a server Java Virtual Machine.
  13. -cp / -classpath <directories and zip/jar files>
  14. set search path for service classes and resouces
  15. -home <directory>
  16. set the path of your JDK or JRE installation (or set
  17. the JAVA_HOME environment variable)
  18. -version
  19. show the current Java environment version (to check
  20. correctness of -home and -jvm. Implies -nodetach)
  21. -showversion
  22. show the current Java environment version (to check
  23. correctness of -home and -jvm) and continue execution.
  24. -nodetach
  25. don’t detach from parent process and become a daemon
  26. -debug 

另外需要编写一个shell脚本,来控制该系统服务启动或者停止,详细请操作如下脚本:

Python代码

#!/bin/bash

CLASSPATH=./trigger-server/terminator-job-trigger-server-3.1.0-SNAPSHOT.jar

for P in ls -F ./trigger-server/dependency/
do
CLASSPATH=$CLASSPATH:./trigger-server/dependency/$P
done

#echo $CLASSPATH

export JAVA_HOME=/opt/taobao/java

start(){
echo “starting”

/home/baisui/commons-daemon-1.0.10-native-src/unix/jsvc -pidfile ./pidfile.pid -outfile ./logs/trigger_server_out.log -errfile ./logs/trigger_server_err.log -cp $CLASSPATH com.taobao.terminator.trigger.LaunchServer

echo “start successful”
}

stop(){
/home/baisui/commons-daemon-1.0.10-native-src/unix/jsvc -stop -pidfile ./pidfile.pid -cp $CLASSPATH com.taobao.terminator.trigger.LaunchServer

echo “trigger_server stopped”
}

case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
usage
;;

esac 


这样可以使用一下脚本来控制系统服务的状态了:

sh start.sh start 启动服务

sh start.sh stop 停止服务
sh start.sh restart 重启服务

本文来源于"阿里中间件团队播客",原文发表时间" 2012-09-20   "

时间: 2024-09-30 06:42:17

将java程序成为linxu的系统服务的相关文章

将java程序成为linux的系统服务

在分布式环境开发中经常会使用socket,或者使用rmi来对外提供服务,常用的办法是将写一个java代码,然后部署到服务器上,但是问题来了.如何将这个服务成为一个可靠的系统服务,不会应为风吹草动就挂了,那就不好了. 所以想到使用apache commons 下面的daemon框架来充当守护进程.首先需要在系统中安装jsvc工具具体操作方法这里不作详细说明,请查看 http://commons.apache.org/daemon/jsvc.html. 最后jsvc安装成功之后需要有执行 jsvc

Java魔法堂:以Windows服务的形式运行Java程序

一.前言   由于防止维护人员误操作关闭Java控制台程序,因此决定将其改造为以Windows服务的形式运行.弄了一个上午总算搞定了,下面记录下来,以供日后查阅.   二.Java Service Wrapper   官网地址:http://wrapper.tanukisoftware.com/doc/english/download.jsp   JavaServiceWrapper以守护进程或windows服务的方式运行java程序.JSW提供四种方案改造原有项目,以实现守护进程或window

JAVA程序员面试32问 选择自 liujun999999 的 Blog (本人做收藏)

程序|程序员 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统). 第四,&和&&的区别. 第五,HashMap和Hashtable的区别. 第六,Collection 和 Collec

sql-我要写一个java程序,去链接oracle数据库,如果获取链接的时间超过1分钟,就抛出异常,请问怎么实现?

问题描述 我要写一个java程序,去链接oracle数据库,如果获取链接的时间超过1分钟,就抛出异常,请问怎么实现? 我要写一个java程序,去链接oracle数据库,如果获取链接的时间超过1分钟,就抛出异常,请问怎么实现? 解决方案 http://blog.chinaunix.net/uid-20752328-id-3451931.html 这里有一篇文章可以解决你的问题你可以点击进去看看; 如果回答对您有帮助请采纳 解决方案二: 说明数据整理不合理吧 解决方案三: 你应该优化数据库结构,或你

安卓应用开发-Java程序能移植修改为安卓app吗?

问题描述 Java程序能移植修改为安卓app吗? 我们写了一个Java的小软件,希望能改编为安卓的app,但不知道能不能做,怎么做.如果能够移植,修改会很多吗? 解决方案 你需要把里面的逻辑抽出来,搭配上Android的界面布局 解决方案二: 看你的软件复杂程度了,学一下Android开发相关的知识吧

从根本上改变我们开发Java程序的方式:Lambda

当今世界主流编程语言无不吸纳强大的闭包概念,但有个例外,它就是Java.数年来,Java语言中增加闭包特征的工作看起来毫无进展. 早在15年之前,Scala语言和TypeSafe框架的作者Martin Odersky和Phillip Wadler发布了实验性的"Pizza"项目,由此,人们开始试图将闭包纳入编程语言的基本特征之一.尽管这看起来有点过于复杂,Java社区大概在2008年就有了接纳闭包概念的想法.但由于Oracle对Sun微系统公司的匆忙收购,Java被冷落,Java语言新

Java程序员面试题集(86-115)

Java程序员面试题集(86-115) 摘要:下面的内容包括Struts 2和Hibernate的常见面试题,虽然Struts 2在2013年6月曝出高危漏洞后已经显得江河日下,而Spring MVC的异军突起更加加速了Struts 2的陨落,但面试中仍然有可能被问及和此框架相关的内容,毕竟Struts 2曾经被阿里巴巴.京东以及政府企业门户网站广泛采用.另一方面,Hibernate目前仍然是ORM框架中的中坚力量,MyBatis在此领域也有不容忽视的一席之地,因此了解这两个ORM框架对Java

将Java程序变成可执行文件的简单方法

运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw -jar my.jar来运行程序(其中my.jar是一个jar文件名,可以是任何指定的jar文件).但在windows下,用户习惯直接运行一个exe来执行程序.在网上有很多程序可以将my.jar或.class文件直接转换成exe文件.但很多都是将jar或.class文件放到exe里成,这样不太方便.有些工具,如javalauncher可以使

编写跨平台Java程序注意事项

程序 使用Java语言编写应用程序最大的优点在于"一次编译,处处运行",然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情:   1. 编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java 等等,但是必须注意你的Jav