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

相关文章

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

springboot将lib和jar分离的操作方法

《springboot将lib和jar分离的操作方法》本文介绍了如何通过优化pom.xml配置来减小SpringBoot项目的jar包大小,主要通过使用spring-boot-maven-plugin... 遇到一个问题,就是每次maven package或者maven install后target中的ja

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

Linux部署jar包过程

《Linux部署jar包过程》文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法... 目录linux部署jar包1.统一jdk版本2.打包插件依赖3.修改密码4.执行jar包总结Linux部署jar包部署

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装