jar做成Windows服务启动

2024-09-02 06:58
文章标签 服务 启动 windows jar 做成

本文主要是介绍jar做成Windows服务启动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近跟腾讯合作做了一个XX大学的项目,是一个应用中间件jar包部署到现场的服务器上,运行状况也良好。我是做成一个bat批处理文件来启动应用服务的,但是这样的话每次重启服务器的话就需要手动的启动bat。而且还有个问题就是启动后有黑窗口,万一被关闭了服务就停止了。所以为了避免这些问题,我决定做成Windows服务,这样就可以随Windows一起启动,也不用担心窗口被关闭了。

// 这里介绍2中方式,WinSW方式在Windows server 2012中亲测有效。[JavaService]:JavaService是一款能把Java应用程序做成NT服务的实用工具,一般用于启动应用服务器。[WinSW]:winsw是一款可将可执行程序安装成Windows Service的开源工具。

(一)JavaService

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%

(二)WinSW

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服务里面启动服务。

这篇关于jar做成Windows服务启动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129316

相关文章

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python