前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用winsw将jar以windows服务的方式运行

使用winsw将jar以windows服务的方式运行

原创
作者头像
Blue_007
修改2023-11-01 08:09:21
1.3K1
修改2023-11-01 08:09:21
举报
文章被收录于专栏:代码生涯代码生涯

? 一、前言

众所周知我们的jar包一般都会Linux上运行。

但总会有一些特殊情况,如网络环境、设备限制,我们开发的jar不能部署到Linux设备上,必须要部署到windows上。

Linux上:

后台启动SpringBoot项目只需要一条命令

nohup sh run.sh(run.sh脚本包含了启动SpringBoot项目的命令)

windows上:

后台启动jar包就比较尴尬,没有那么好用的命令来后台启动项目。有着以下的缺点:

  1. 服务器启重启后,程序无法实现自启动;
  2. 需要打开命令行窗口输入命令行才可运行,很不方便(或需要编写.bat文件);
  3. 需要停止程序时只能在任务管理器中结束,并且多个这样程序运行时无法从进程名中进行区分(或需要编写.bat文件);
  4. 打成war包放到Tomcatweb容器中就浪费了SpringBoot内嵌web容器的优势。

这里我新了解到了一些工具winsw、nssm,它们不仅可以改善以上缺点。 这里主要讲解winsw使用方式,nssm工具使用方式也很容易,可以自行百度。

? 二、winsw简介

winsw是一个可以将任何应用程序注册成服务的软件。

下载地址:winsw

注意:在安装winsw前,window要有.net framework4,否则后面会出问题(现在电脑都有)

? 2.1 如何查看.net版本

进入C:\Windows\Microsoft.NET\Framework

? 2.2 下载winsw

打开下载地址,下载2.12.0版。

现在是2023.10.31,现在最新版为2.12.0,网页中3.0.0为预发布。

? 2.3 打包jar

SpringBoot项目通过执行mvn clean package命令后得到可执行jar包:

test-0.0.1.jar(测试用,具体名称在pom.xml文件中定义)

? 2.4 修改下载的winsw文件

sample-minimal.xmlWinSW.NET461.exe

改为

test-0.0.1.xmltest-0.0.1.exe

文件名保持一致,方便后续操作

注意:(jar包、.exe文件、.xml文件均在同一目录下)

如:

代码语言:txt
复制
创建一个test目录,将jar包、.exe文件、.xml文件均在放在test目录下
-test
--test-0.0.1.xml
--test-0.0.1.exe
--test-0.0.1.jar

? 2.5 修改test-0.0.1.xml文件

代码语言:html
复制
<configuration>
  
  <!-- ID of the service. It should be unique accross the Windows system-->
  <!--服务ID:启动、关闭、删除服务时,都是通过ID来操作的-->
  <id>test-0.0.1</id>
  <!-- Display name of the service -->
  <!--服务名称-->
  <name>test-0.0.1 (powered by WinSW)</name>
  <!-- Service description -->
  <!--服务描述-->
  <description>This service is a service for Statement Project(http://www.eachtravel.com/)</description>
  
  <!-- Path to the executable, which should be started -->
  <!--当前电脑配置了java环境变量,直接写成“java”就行;你也可以写成类似这样:D:\develop\jdk1.8\jre\bin\java-->
  <executable>java</executable>
  
  <!--启动参数-->
  <arguments>-jar test-0.0.1.jar</arguments>
  <!--<arguments>-jar "C:\Users\Administrator\Desktop\winsw\statement-0.0.1-SNAPSHOT.jar"</arguments>-->

  <!-- 日志地址 -->
  <logpath>%BASE%\log</logpath>
  <!-- 日志模式 -->
  <logmode>rotate</logmode>

</configuration>

到此就完成了配置,可以安装并启动服务了

? 2.6 安装、删除、启动、停止服务

为了方便以后不用老是打指令可以编写4个.bat文件

进入到三个文件的目标目录,我这里就是进入test目录下,分别创建:

stop.batstart.bat服务删除.bat服务注册.bat

目录结构:

代码语言:txt
复制
-test
--test-0.0.1.xml
--test-0.0.1.exe
--test-0.0.1.jar
--start.bat
--stop.bat
--服务删除.bat
--服务注册.bat

start.bat文件内容(启动)版本

代码语言:text
复制
net start test-0.0.1

stop.bat文件内容(停止)

代码语言:text
复制
net stop test-0.0.1

服务删除.bat文件内容

代码语言:text
复制
sc delete test-0.0.1

服务注册.bat文件内容

代码语言:text
复制
test-0.0.1.exe install

? 2.7 运行

  1. 先点击服务注册.bat
  2. 安装注册成功后,我们点击start.bat来启动服务。当然,也可以通过在cmd命令行那里输入:services.msc命令直接进入服务界面,通过服务ID找到服务,然后手动启动;
  3. 启动服务成功后,就可以访问项目了;
  4. 点击stop.bat来停止服务;
  5. 点击服务删除.bat来删除服务。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ? 一、前言
  • ? 二、winsw简介
    • ? 2.1 如何查看.net版本
      • ? 2.2 下载winsw
        • ? 2.3 打包jar
          • ? 2.4 修改下载的winsw文件
            • ? 2.5 修改test-0.0.1.xml文件
              • ? 2.6 安装、删除、启动、停止服务
                • start.bat文件内容(启动)版本
                • stop.bat文件内容(停止)
                • 服务删除.bat文件内容
                • 服务注册.bat文件内容
              • ? 2.7 运行
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com