为什么80%的码农都做不了架构师?>>>
很久前就使用JAVA写了一个后台服务器,基于MINA框架的。并且一直部署运行于服务器中,当然有一个黑框框。
就正常运行而言,此种运行方式没有任何问题。
但是就这运行期间出现的一些问题:
1,服务器问题重启后,每次都要登录远程将服务器打开,即使我已经配置了开机自启动,但是由于黑框框是基于界面运用的,每次必须要完成系统启动画面之后该黑框框才能启动。所以即使设置成了开机自启动,每次服务器维护重启后,都需要登录一下远程出发系统加载。
2,有个黑框框总显低端些,并且容易不小心被关闭。
基于以上问题,加之以前就对Java Service Wrapper有所涉猎,但并未实践,所以利用一点时间来将服务器打包成WINDOWS NT服务。
关于Java Service Wrapper的介绍在此就不鳌诉了,http://wrapper.tanukisoftware.com/doc/english/download.jsp
本人最简单的了解,就是将JAVA应用打包成标准的WINDOS(当然也包含linux,在此仅以windows为例)服务。
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文件的配置。。