碰到一次服务器为windows的,客户要求把java程序做成windows服务。
我用了 winsw 去实现,下载地址:https://github.com/kohsuke/winsw/releases

下载后改名,改成和jar包名称一样,同事创建和jar名称一样的xml配置文件

<configuration>
<id>test</id>
<name>test</name>
<description>test</description>
<executable>E:\JDK\jdk180131\bin\java</executable>
<arguments>-jar %BASE%\test.jar</arguments>
<logpath>%BASE%\serviceLog</logpath>
<logmode>rotate</logmode>
</configuration>
id:安装windows服务后的服务ID,必须是唯一的。
name:服务名称,也必须是唯一的。一般和id一致即可。
description:服务说明,可以使用中文,可做备注使用。
executable:执行的命令,比如启动springboot应用的命令java。
arguments:命令执行参数,比如 包路径,类路径等。
%BASE% ----代表当前目录,同一目录下可写可不写
arguments ----需要执行的命令
executable----Java的话填写jdk安装地址,也可以直接写java,本地配置环境变量的话
{不过,我的电脑不行,报错找不到指定文件,不知道是不是因为安装两个jdk的原因,所以我把jdk安装目录也填写进来了}
网络搜索资料
<service>
--设置服务id
<id>myapp</id>
--设置服务名称 一般和id一样
<name>MyApp Service (powered by WinSW)</name>
--类似于服务说明、备注>
<description>This service is a service created from a sample configuration</description>
--这里输入软件的路径
<executable>%BASE%\myExecutable.exe</executable>
--设置优先事项
<priority></priority>
--stoptimeout:停止超时时间,默认“15 sec”
<stoptimeout>15 sec</stoptimeout>
--是否在停止子进程之前终止父进程,默认true
<stopparentprocessfirst>true</stopparentprocessfirst>
--Boot:设备驱动程序由操作系统加载程序启动。此值仅对驱动程序服务有效。
--System:设备驱动程序由操作系统初始化过程启动。此值仅对驱动程序服务有效。
--Automatic:自动,服务控制管理器将在系统启动期间自动启动服务。
--Manual:手动,当进程调用StartService方法时,由服务控制管理器启动的服务。
--Disabled:禁用,无法再启动的服务。
--默认值为Automatic
<startmode>Automatic</startmode>
--指定多长时间内服务应该对SetServiceStatus函数进行下一次调用,否则会被标记为无响应,默认“15 sec”
<waithint>15 sec</waithint>
--服务两次调用SetServiceStatus函数的间隔时间,默认“1 sec”
<sleeptime>1 sec</sleeptime>
<log mode=""></log>
</service>
以管理员身份执行cmd,切换到exe所在目录,执行如下命令即可。
test.exe install 安装
test.exe uninstall 删除
test.exe start 启动
test.exe stop 停止
test.exe restart 重启
test.exe status 查看状态
参考连接 java jar 生成服务_将springboot打包成的jar文件做成windows服务_Kyle Hsueh的博客-优快云博客
本文介绍了如何在Windows服务器上将Java程序,特别是Spring Boot应用,转换为Windows服务。通过使用winsw工具,下载并配置相应的xml文件,设置服务ID、名称、描述以及执行命令和参数。在遇到因多个JDK导致的问题时,可以直接指定JDK路径。以管理员权限运行CMD,切换到winsw exe文件所在目录,执行相应命令即可完成服务的创建。
1310

被折叠的 条评论
为什么被折叠?



