将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  "

相关文章
|
8天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
30 3
|
23小时前
|
JavaScript Java 测试技术
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
11 3
|
23小时前
|
JavaScript Java 测试技术
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
9 1
|
1天前
|
JavaScript Java 测试技术
基于Java的珠江学院大学生自愿者服务网的设计与实现(源码+lw+部署文档+讲解等)
基于Java的珠江学院大学生自愿者服务网的设计与实现(源码+lw+部署文档+讲解等)
10 0
|
1天前
|
JavaScript Java 测试技术
基于Java的高校大学生党建系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的高校大学生党建系统的设计与实现(源码+lw+部署文档+讲解等)
7 1
|
1天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
26 10
|
1天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
2天前
|
存储 数据可视化 安全
Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术
智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。无处不在的网络学习、融合创新的网络科研、透明高效的校务治理、丰富多彩的校园文化、方便周到的校园生活。简而言之,“要做一个安全、稳定、环保、节能的校园。
19 6
|
2天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
4天前
|
JavaScript Java 测试技术
基于Java的在线电影票购买系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的在线电影票购买系统的设计与实现(源码+lw+部署文档+讲解等)
18 0