将jar包配置为windows服务

一、为什么要这么做?

在windows的服务器中,通过打开一个cmd窗口,执行java --jar xxxx.jar的方式,每一个cmd窗口,相当于一个临时session会话,当cmd窗口关闭之后,启动的java程序就停止了。

为了避免这种情况的发生,需要将执行jar包,以后台进程的方式执行jar包,类似linux服务器,以nohup java -jar xxx.jar的方式。

二、使用WinSW将jar包做成windows服务

2.1 实现步骤

1、下载WinSW 64位:https://github.com/winsw/winsw/releases

2、将下载的WinSW.NET4.exe文件复制到jar程序所在文件夹中(我的jar包是research.jar)

3、将WinSW.NET4.exe重命名为research.exe(和jar同名)

4、在同目录下新建一个xml文件,命名为research.xml,写入以下内容

<service>
     <id>research</id>
     <name>research</name>
     <description>research</description>
     <env name="JAVA_HOME" value="%JAVA_HOME%"/>
     <executable>java</executable>
     <arguments>-jar "C:\Users\lyr\Desktop\test\research.jar"</arguments>
     <startmode>Automatic</startmode>
     <logpath>D:logs\log</logpath>
     <logmode>rotate</logmode>
 </service>

5、xml补充说明

id,name,description我都写成了和jar包相同的名称

arguments:-jar后面写上自己jar包的路径

logpath:log文件路径

6、运行:以管理员运行cmd进入jar所在的目录,然后执行research.exe install

C:\Users\lyr\Desktop\test>research.exe install
Installing service 'research (research)'...
Service 'research (research)' was installed successfully.

7、出现上图的"Service 'research (research)' was installed successfully",表示服务安装成功,然后去Windows服务里面启动服务(服务名称是research)

2.2 卸载已经安装的服务

以管理员运行cmd进入jar所在的目录,然后执行research.exe uninstall

2.3 评价

确实能运行项目,也能在自定义的log路径看到log执行日志

不方便的地方:每次修改一个地方的代码,都得停止服务,更新jar包,然后再启动服务。

2.4 可能遇到的问题

部署之后,服务启动不成功

解决方法一:对服务,右键选择属性,选择登录,勾选允许服务与桌面交互

解决方法二:使用全新的WinSW-x64.exe再设置一遍服务。

三、一个比较傻的方法(不推荐)

下面的源码得放在bat文件(可以先写在txt文件,然后改为bat后缀)

评价:点击确实可以运行服务,但是在任务管理器看到的名称是java(TM)的,如果是运行多个项目,那么根本分不清楚是哪个项目,所以不推荐。

@echo off
start javaw -jar C:\Users\lyr\Desktop\test\research.jar
exit
原文地址:https://www.cnblogs.com/YuRong3333/p/15692923.html