在使用Java开发应用程序时,我们通常会打包成Jar包独立运行,但是在实际生产环境中,服务器重启或出现异常时,程序往往不能重启或随服务器开机启动,所以我们可以采用Java Service Wrapper工具解决这一问题,Wrapper可以将我们的Java程序包装成系统服务,这样就可以随着系统的运行而自动运行了。本文主要介绍使用Wrapper将Java程序装成系统服务的方法,以linux系统为例。
1. 下载Wrapper
2. Java Service Wrapper目录结构

cmd 控制台下输入 tree /f 可以查看wrapper的详细目录和文件结构,显示目录结构如下:
3. 包装Java 应用程序

3.1 建立目录结构
讯享网
复制Java Service Wrapper文件到应用程序目录
(1)复制/bin/wrapper到应用的bin目录;
(2)复制/bin/testwrapper到应用的bin目录;
(5)复制/src/conf/wrapper.conf.in到应用的conf目录下;
(6)复制/lib/libwrapper.so到应用的lib目录;
(7)复制/lib/wrapper.jar到应用的lib目录;
复制自己的程序Jar包和依赖文件夹到src目录下;
注:由于本程序使用了自定义的配置文件config.properties和日志配置文件log4j.properties,而程序中配置文件的引用路径是/config/config.properties,所以需要将配置文件config.properties和log4j.properties单独拷贝出来,复制到src/config目录下。
3.2 编辑testwrapper文件
该文件是应用程序的启动入口,将文件重命名为程序名
#mv testwrapper StreamServer
修改文件内容
3.3 编辑wrapper.conf.in 文件
重命名wrapper.conf.in为wrapper.conf,所有java service wrapper配置项均在此设置,按以下步骤进行设置:
- 文件编码及子配置文件
文件头部包含了配置文件编码格式,子配置文件等相关信息,如下所示:

讯享网
- Wrapper 语言设置
通过这两项的设置可以指定Wrapper 的语言java程序基础配置种类,可以在Wrapper 官网下到这些语言包支持,目前不支持中文。
- java运行环境设置
本程序使用PATH环境变量配置信息
- 程序入口
wrapper的主类,可以是org.tanukisoftware.wrapper.WrapperStartStopApp或WrapperSimpleApp
WrapperStartStopApp可以设置应用程序的启动和关闭入口
- 类库设置
- JVM相关配置
附加参数即为java命令可选参数,如下所示:
内存大小设置:
- 应用程序参数设置:
WrapperStartStopApp的配置形式
- Wrapper 日志配置
- Wrapper 基本属性配置
- Wrapper JVM 检查
内存溢出检测
3.4 完成
修改成功后的文件夹目录结构如下:
4. 部署成系统服务
将上面的StreamServer文件夹移动到linux服务器/opt目录下
4.1 赋予服务执行权限
4.2 让服务Server开机自动运行
4.3 测试
注意:
1)若StreamServer 需要访问mysql数据库,则要查看开机启动顺序是否在mydqld服务之前,若在之前应进行如下操作
删除服务添加之后/etc/rc2.d,rc3.d,rc4.d,rc5.d中的StreamServer服务启动命令文件,将该命令文件的启动顺序改到mysqld服务之后,S+数字 该数字在mysqld服务之后
删除地址软链接使用 rm -rf symbolic_name
ln -s /etc/init.d/StreamServer /etc/rc3.d/S90StreamServer
ln -s /etc/init.d/StreamServer /etc/rc5.d/S90StreamServer
2)执行出现错误 /bin/sh^M: bad interpreter:没有那个文件或目录解决
错误分析:
因为我在windows下编辑的脚本,所以有可能有不可见字符。
脚本文件是DOS格式的, 即每一行的行尾以 来标识, 其ASCII码分别是0x0D, 0x0A.
可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的
解决方法是使用dos2unix命令转一下,即输入: dos2unix 文件名
dos2unix /opt/SocketServer/bin/StreamServer
dos2unix /opt/SocketServer/bin/wrapper
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/3977.html