如何将jar包加入windows服务

如何将jar包加入windows服务

  1. 下载winsw

  2. 编写于exe文件同名的xml配置文件

     <service>
       
       <!-- ID of the service. It should be unique accross the Windows system-->
       <id>dam</id>
       <!-- Display name of the service -->
       <name>dam-manager</name>
       <!-- Service description -->
       <description>dam test</description>
       
       <!-- Path to the executable, which should be started -->
       <executable>java</executable>
       
       <arguments>-jar "E:\testwinsw\dam-manager.war" --server.port = 8088</arguments>
     
     </service>
    
  3. 注册服务

  • 将配置文件和可执行文件放入同一个目录下,让winsw可以识别到配置文件
  • 打开powershell窗口,执行命令 winsw(你的exe文件名) install,将程序注册成服务
  • 打开windows服务窗口,启动服务
  1. 服务运行时相关信息都存放在于exe文件同级的目录下,通过日志观察服务启动情况

测试服务重启,停止,启动时。服务所运行jar包的状态

  1. 初次启动服务
  • 查看dam日志,可以查看到启动日志,说明项目已经启动

  • 进程中可以查看到运行的java进程

  • wrapper日志中可以查看服务启动信息

     2019-05-13 13:46:45,427 INFO  - Starting ServiceWrapper in the service mode
     2019-05-13 13:46:45,445 INFO  - Starting java -jar "E:\testwinsw\dam-manager.war" --server.port = 8088
     2019-05-13 13:46:45,447 INFO  - Starting java -jar "E:\testwinsw\dam-manager.war" --server.port = 8088
     2019-05-13 13:46:45,455 INFO  - Started process 14740
     2019-05-13 13:46:45,457 DEBUG - Forwarding logs of the process System.Diagnostics.Process (java) to winsw.DefaultLogAppender
    
  1. 服务运行时,停止服务
  • 在任务管理器中选择服务进行停止服务操作

  • 进程列表中运行此服务的进程消失

  • 查看wrapper日志,发现已经成功给发送kill procee命令,code 为0代表成功

     2019-05-13 13:53:23,350 INFO  - Stopping dam
     2019-05-13 13:53:23,350 DEBUG - ProcessKill 14740
     2019-05-13 13:53:23,402 INFO  - Stopping process 14740
     2019-05-13 13:53:23,405 INFO  - Send SIGINT 14740
     2019-05-13 13:53:23,863 INFO  - SIGINT to14740 successful
     2019-05-13 13:53:23,864 INFO  - Finished dam
     2019-05-13 13:53:23,877 DEBUG - Completed. Exit code is 0
    
  1. 服务运行时重新启动服务
  • 清除所有日志信息

  • 重新启动服务,所有信息与第一步操作保持一致

  • 任务管理器中选择服务,找到此服务进行重新启动

  • 进程中此服务的进程先消失然后迅速出现

  • wrapper日志中新增两条日志,分别为关闭和启动的日志

      2019-05-13 14:03:14,385 INFO  - Stopping dam
      2019-05-13 14:03:14,385 DEBUG - ProcessKill 10648
      2019-05-13 14:03:14,459 INFO  - Stopping process 10648
      2019-05-13 14:03:14,462 INFO  - Send SIGINT 10648
      2019-05-13 14:03:14,916 INFO  - SIGINT to10648 successful
      2019-05-13 14:03:14,917 INFO  - Finished dam
      2019-05-13 14:03:14,925 DEBUG - Completed. Exit code is 0
      2019-05-13 14:03:15,760 INFO  - Starting ServiceWrapper in the service mode
      2019-05-13 14:03:15,799 INFO  - Starting java -jar "E:\testwinsw\dam-manager.war" --server.port = 8088
      2019-05-13 14:03:15,802 INFO  - Starting java -jar "E:\testwinsw\dam-manager.war" --server.port = 8088
      2019-05-13 14:03:15,809 INFO  - Started process 3040
      2019-05-13 14:03:15,812 DEBUG - Forwarding logs of the process System.Diagnostics.Process (java) to winsw.DefaultLogAppender
    
  • 在项目输出日志中查找项目启动日志,可以查看到两条,说明项目确实重新启动了一次

  1. 重启电脑,查看服务情况
  • 服务已经启动,存在于服务列表中

  • 进程列表中存在此服务的进程

  • wapper日志中多出两条

      2019-05-13 14:20:43,066 ERROR - Failed to log event in Windows Event Log. Reason: 
      System.ComponentModel.Win32Exception (0x80004005): 接口未知。
         在 System.Diagnostics.EventLogInternal.InternalWriteEvent(UInt32 eventID, UInt16 category, EventLogEntryType type, String[] strings, Byte[] rawData, String currentMachineName)
         在 System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
         在 System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type)
         在 winsw.WrapperService.LogEvent(String message, EventLogEntryType type)
      2019-05-13 14:21:17,613 INFO  - Starting ServiceWrapper in the service mode
      2019-05-13 14:21:17,723 INFO  - Starting java -jar "E:\testwinsw\dam-manager.war" --server.port = 8088
      2019-05-13 14:21:17,743 INFO  - Starting java -jar "E:\testwinsw\dam-manager.war" --server.port = 8088
      2019-05-13 14:21:17,793 INFO  - Started process 1968
      2019-05-13 14:21:17,803 DEBUG - Forwarding logs of the process System.Diagnostics.Process (java) to winsw.DefaultLogAppender
    
  • 项目日志中添加了新的启动信息,说明服务确实被启动了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值