zoukankan      html  css  js  c++  java
  • 使用winsw将springboot打包的jar注册系统本地服务

    1、下载winsw

    下载地址:https://github.com/kohsuke/winsw/releases

    我这里下载的是2.3.0版。

    下载sample-minimal.xml和WinSW.NET4.exe两个文件。

    2、将三个文件放在同一个文件夹中

    WinSW.NET4.exe

    sample-minimal.xml

    springboot jar包

    3、修改文件名字

    需要将winsw执行程序跟xml改成同样的名字,推荐使用项目名+Service的命名方式,比如:

    WinSW.NET4.exe修改为rexel-middleware-0.0.1.exe

    sample-minmal.xml修改为rexel-middleware-0.0.1.xml

    4、编辑xml文件

     配置内容

    <configuration>
      <!--安装成Windows服务后的服务名-->
      <id>rexel-middleware</id>
      <!--显示的服务名称-->
      <name>rexel-middleware</name>
      <!--对服务的描述-->
      <description>rexel-middleware for hzzg project</description>
      <!--这里写java的路径,如何配置了环境变量直接写"java"就行-->
      <executable>java</executable>
      <!---jar后面的是项目名,可以配置内存限制如-Xmx256m代表堆内存最大值为256MB -->
      <arguments>-jar rexel-middleware-0.0.1.jar</arguments>
      <!--日志模式-->
      <logmode>rotate</logmode>
    </configuration>
    

    5、执行命令安装服务

    打开系统命令行窗口,进入到rexel-middleware-0.0.1.exe所在文件夹,

    然后执行命令安装服务命令:rexel-middleware-0.0.1.exe install。

    执行发现报错如下:

    错误日志:

    D:MyWork22_Github
    exel-cn
    exel-jarvis
    exel-middlewareinstall>rexel-middleware-0.0.1.exe install
    2019-12-02 10:25:24,938 INFO  - Installing the service with id 'myapp'
    2019-12-02 10:25:24,964 FATAL - WMI Operation failure: AccessDenied
    WMI.WmiException: AccessDenied
       在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result)
       在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args)
       在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor)
       在 winsw.WrapperService.Main(String[] args)
    WMI.WmiException: AccessDenied
       在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result)
       在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args)
       在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor)
       在 winsw.WrapperService.Main(String[] args)
    

    解决方法:

    使用管理员权限重新打开cmd窗口,重新执行rexel-middleware-0.0.1.exe install

      

    6、启动服务

    命令提示符界面输入命令启动服务。

    命令:net start rexel-middleware

    7、查看是否启动成功

    打开系统服务功能:运行——输入services.msc

    即可看见自己命名的服务rexel-middleware。

    我的java程序是一个从外部接口定时拉取数据,并写入到mysql的程序,

    可以看到已经在开始写入数据了,证明程序运行成功。

      

    8、重启测试

    重启电脑后该服务会自动启动,执行第6步(net start rexel-middleware)可检查是否成功。

    9、删除服务

    分为两步:

    步骤1:停止服务

    命令提示符界面输入命令停止运行服务:net stop rexel-middleware

    步骤2:删除服务

    命令提示符界面输入命令可删除服务:rexel-middleware-0.0.1.exe uninstall

      

    10、修改为批处理文件

    上面所有的命令都可以写在批处理文件中,部署的时候就可以实现一键部署了。

    例如start.bat内容如下:

    rexel-middleware-0.0.1.exe install
    net start rexel-middleware
    

      

    例如stop.bat内容如下:

    net stop rexel-middleware
    rexel-middleware-0.0.1.exe uninstall
    

    --END--

  • 相关阅读:
    内核模式之事件
    用户模式之临界区
    _stdcall与_cdecl区别
    列出系统所有进程
    一道多线程的题
    进程间通信三:父进程传参数与子进程返回值
    进程间通信二:管道技术之命名管道
    进程间通信二:管道技术之匿名管道
    进程间通信二:管道技术之输入输出重定向
    补充实验1:dhcp服务器分配网关-路由器的静态路由优先级
  • 原文地址:https://www.cnblogs.com/quchunhui/p/11969280.html
Copyright © 2011-2022 走看看