好久前就使用JAVA写了一个后台服务器,基于MINA框架的。而且一直部署运行于服务器中,固然有一个黑框框。java
就正常运行而言,此种运行方式没有任何问题。linux
可是就这运行期间出现的一些问题:windows
1,服务器问题重启后,每次都要登陆远程将服务器打开,即便我已经配置了开机自启动,可是因为黑框框是基于界面运用的,每次必需要完成系统启动画面以后该黑框框才能启动。因此即便设置成了开机自启动,每次服务器维护重启后,都须要登陆一下远程出发系统加载。服务器
2,有个黑框框总显低端些,而且容易不当心被关闭。app
基于以上问题,加之之前就对Java Service Wrapper有所涉猎,但并未实践,因此利用一点时间来将服务器打包成WINDOWS NT服务。框架
关于Java Service Wrapper的介绍在此就不鳌诉了,http://wrapper.tanukisoftware.com/doc/english/download.jsp jvm
本人最简单的了解,就是将JAVA应用打包成标准的WINDOS(固然也包含linux,在此仅以windows为例)服务。jsp
Java Service Wrapper的Standard,Professional版本是须要license的,通俗的说是要收费,可是Community版本不须要,至于版本之间的区别我想对我影响不大,因此没有深究。就用Community版本吧。 性能
下载下来后解压: 动画
图一
我现有的项目很简单:
图二
server-server-1.0.0-release.jar是还行文件,libs/下是运行时所须要的依赖包,log是日志保存目录,conf是配置文件目录。
要使用Java Service Wrapper首先须要
(1)将图一中lib目录下的wrapper.dll、wrapper.jar拷贝到图二中的libs下。
(2)将图一中bin目录下的wrapper.exe文件拷贝到图二中当前目录下,该文件是将java应用打包成对应平台服务的可执行文件
(3)将图一中src/conf目录下的wrapper.conf.in文件拷贝到图二中conf下并将.in后缀去掉,wrapper.conf.in文件是一个标准的配置模板,用来配置Java Service Wrapper的,配置的内容就是项目目录结构、依赖关系、启动、jvm性能、日志、异常处理等等,稍微看一下应该就很容易理解。
(4)将图一中src/bin目录下的AppCommand.bat.in文件拷贝到图二中的当前目录下并将.in后缀去掉。该文件是一个基于命令行的可执行文件,能够用于对相应的服务执行start,install,uninstall,pause,resume,stop等命令。
完成以上操做后,个人项目目录以下:
具体目录结构:
+conf
-wrapper.conf
+libs
-wrapper.dll
-wrapper.jar
+log
AppCommand.bat
server-server-1.0.0-release.jar
wrapper.exe
接下来也是最重要的一步就是配置wrapper.conf文件
主要修改的有如下几点;
(1)类加载路径Java Classpath
# Java Classpath (include wrapper.jar) Add class path elements as
# needed starting from 1
wrapper.java.classpath.1=server-server-1.0.0-release.jar
wrapper.java.classpath.2=libs/wrapper.jar
(2)动态库加载路径Java Library Path
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=libs
(3)须要运行的应用主类以及启动参数Application parameters
wrapper.app.parameter.1=cn.iever.wxh.yjserver.server.App //个人应用主类
wrapper.app.parameter.2=-h120 //应用参数
(4)日志输出文件Log file to use for wrapper output logging.
# Log file to use for wrapper output logging.
wrapper.logfile=log/wrapper.log
(5)服务描述Wrapper Windows NT/2000/XP Service Properties
# Name of the service
wrapper.name=SmartHome
# Display name of the service
wrapper.displayname=Smart Home Service
# Description of the service
wrapper.description=Yong Jing Smart Home Service
wrapper的配置文件模板中给出的其余配置我基本采用默认,尚未深刻去对各个配置信息进行研究,可是以上配置已经能够基本符合个人需求。
接下来须要修改一下AppCommand.bat文件
主要将文件内容中的set _WRAPPER_CONF="conf/%_WRAPPER_BASE%.conf"进行修改,即设定配置文件因此在路径。
到此一切准备工做以及配置也都完成了。
打开cmd执行AppCommand.bat install命令安装服务
同时相应的服务咱们已经能够在系统服务中查询到
同理咱们执行AppCommand.bat stop/remove/pause等命令也均可以对该服务进行操做,固然也能够执行在系统服务中对服务进行操做。
至此我就使用Java Service Wrapper将个人java应用打包成了后台服务。
固然实践是完成了,关于Java Service Wrapper还有其余一些东西须要继续深刻研究 尤为是关于wrapper.conf文件的配置。。