最近跟腾讯合作做了一个XX大学的项目,是一个应用中间件jar包部署到现场的服务器上,运行状况也良好。我是做成一个bat批处理文件来启动应用服务的,但是这样的话每次重启服务器的话就需要手动的启动bat。而且还有个问题就是启动后有黑窗口,万一被关闭了服务就停止了。所以为了避免这些问题,我决定做成Windows服务,这样就可以随Windows一起启动,也不用担心窗口被关闭了。
// 这里介绍2中方式,WinSW方式在Windows server 2012中亲测有效。
[JavaService]:JavaService是一款能把Java应用程序做成NT服务的实用工具,一般用于启动应用服务器。
[WinSW]:winsw是一款可将可执行程序安装成Windows Service的开源工具。
spring boot maven install–>生成的HelloWorld.jar
JavaService下载地址
WIN 64位
WIN 32位
1.设置环境变量
环境变量1、JAVA_HOME: JDK 安装路径。
环境变量2、JAR_HOME:JAR_HOME/bin为JAR包所在路径,即我们的工作路径。
3.解压JavaService的zip 包,把 JavaService.exe和jar包 复制到 %JAR_HOME%/bin 目录下。
4.创建一个目录 %JAR_HOME%/logs,存放日志文件。
5.打开 cmd(以管理员身份进行), 进入 %JAR_HOME%bin 目录, 执行命令:
JavaService.exe -install HelloWorld "%JAVA_HOME%/jre/bin/server/jvm.dll"
-Djava.class.path="%JAR_HOME%/bin/hello.jar;%JAVA_HOME%/lib/tools.jar"
-Xms64M –Xmx256M
-start org.springframework.boot.loader.JarLauncher
-stop org.springframework.boot.loader.JarLauncher
-method systemExit
-out "%JAR_HOME%/logs/out.log"
-err "%JAR_HOME%/logs/err.log"
-current "%JAR_HOME%/bin"
-depends MySQL
-auto –overwrite
注:HelloWorld :服务名称(可自行修改);
-Xms64M –Xmx256M Java虚拟机支持的内存最小值和最大值;
-depends MySQL 为可选项(一般不加);
更详细情况查看:JavaService,zip 包中的文档。
具体命令行参数说明, 运行 JavaService.exe -help 查看。
6.当执行上述命令后出现 “The HelloWorld automatic service was successfully installed” 字样,则表示服务已经创建成功;
net start HelloWord 启动服务
net stop HelloWord 停止服务
sc delete HelloWorld 删除服务
这里写了几个简易的安装,启动和关闭服务的脚本,只需将jar包,JavaService.exe,脚本文件和一个配置文件config.ini放在同一路径下即可,注意脚本必须在管理员权限下打开才行:
config.ini
//所要生成Windows服务的名字
serviceName=HelloWorldService
//Jar包的名字
jarName=HelloWorld
install.bat
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
for /f "delims=" %%i in ('type "config.ini"^| find /i "="') do set %%i
set path=%cd%
md "%path%/logs"
echo %serviceName%
echo %jarName%
echo %JAVA_HOME%
echo %path%
JavaService.exe -install %serviceName% "%JAVA_HOME%/jre/bin/server/jvm.dll"
-Djava.class.path="%path%/%jarName%.jar;%JAVA_HOME%/lib/tools.jar"
-Xms64M Xmx256M -start org.springframework.boot.loader.JarLauncher
-stop org.springframework.boot.loader.JarLauncher
-method systemExit
-out "%JAR_HOME%/logs/out.log"
-err "%JAR_HOME%/logs/err.log"
-current "%path%"
-auto
-overwrite
startup.bat
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
for /f "delims=" %%i in ('type "config.ini"^| find /i "="') do set %%i
net start %serviceName%
shutdown.bat
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
for /f "delims=" %%i in ('type "config.ini"^| find /i "="') do set %%i
net stop %serviceName%
spring boot maven install–>生成的HelloWorld.jar
WinSW:下载地址
1.将下载的WinSW.NET4.exe文件复制到jar程序所在文件夹中。
2.将WinSW.NET4.exe重命名为HelloWorld.exe(和jar同名)。
3.在同目录下新建一个xml文件,命名为HelloWorld.xml,写入以下内容:
<service>
<id>HelloWorld</id>
<name>HelloWorld</name>
<description>This is a HelloWorld</description>
<env name="JAVA_HOME" value="%JAVA_HOME%"/>
<executable>java</executable>
<arguments>-jar "D:\xx\HelloWorld.jar"</arguments>
<startmode>Automatic</startmode>
<logpath>logs\log</logpath>
<logmode>rotate</logmode>
</service>
如果没有配置环境变量,直接将三个文件扔到java的bin目录下运行。去掉标签
<env name="JAVA_HOME" value="%JAVA_HOME%"/>
4.以管理员运行cmd进入jar所在的目录,然后执行HelloWorld.exe install。
5.出现上图消息表示服务安装成功,然后去Windows服务里面启动服务。