栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Windows Server 2012 通过winSW注册服务后,服务被系统强制中断的服务属性设置问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windows Server 2012 通过winSW注册服务后,服务被系统强制中断的服务属性设置问题

摘要:在一个实际项目中,最近突然后台应用一直被强行关闭,导致不能正常的访问。应用通过winSW将java编写的后台jar(spring框架)程序注册为一个服务。后续临时的解决办法为将此服务设置为在服务中断后,自行重启,使其能接着使用

上面的问题通过windows的事件日志,查找到对应错误信息。同时也是通过直接在对应服务上,点击鼠标右键属性设置。服务采用的winSW进行注册服务,这里也对winSW的使用做一个简单的记录(注:采用 winSW 注册为服务后,可以不用弹出Java运行的黑框体,大大讲减少了被 “不小心” 关闭的问题)。


一、问题现状
将 .jar应用程序注册为服务后,当服务挂掉,也意味着 .jar后台应用程序挂掉,在不会自行重启。
二、解决办法 2.1 设置服务中断恢复


01、恢复属性设置

设置服务在中断后,自行尝试重启动。


02、设置后的效果

通过以上设置后,在服务终端后,系统会自行去尝试重启此服务。


三、winSW使用及配置说明

前面提到是通过winSW进行将应用注册为服务,在winSW的配置文件分为两种,一种是最小配置;另一种是全配置文件。最小配置文件仅将应用程序注册问服务。全配置中则可以配置上方服务器终端后的恢复模式,优先级等等。对于这些参数个人并未一一尝试,这里仅为对 winSW作者给到的说明进行机翻,以便自己掌握。

winSW链接地址:https://github.com/winsw/winsw/releases

3.1 winSW使用

winSW配置文件内容


  
    
    SjjdServiceID
    
    SjjdService
    
    思杰软件
    
    java
    
    -Xmx1024m -jar SjjdService.jar
    
    rotate


SjjdServiceStart.bat 文件内容

SjjdService.exe install
net start SjjdService

SjjdServiceStop.bat 文件内容

net stop SjjdService
SjjdService.exe uninstall

通过以上截图,winSW 的应用主要用以上几步:

    winSW.exe名称需要需要和配置文件一致winSW.exe、winSW配置文件、应用程序三者在同一目录 通过命令完成服务的开启或停止

主要命令有一下几种,通过此链接:https://github.com/winsw/winsw/blob/v3/docs/cli-commands.md#install-command 可以查看官网给到说明。

winsw install 安装服务 winsw uninstall 卸载服务 winsw start 开启服务 winsw stop 停止服务 winsw restart 重新启动服务 winsw status 检查服务的当前状态 3.2 配置说明 这里根据配置文件节点进行一段一段的分拆翻译,以下为全配置版本配置文件


01、必须配置项
原文:

  
  myapp
  
  MyApp Service (powered by WinSW)
  
  This service is a service cratead from a sample configuration
  
  
  %base%myExecutable.exe

翻译:

配置必填项
标签含义
服务ID,在windows系统中,必须唯一
服务显示名称,只能是英文或者数字
对服务的描述,可以用于记录此服务有什么用
启动可执行文件的路径,实际环境中,如果配置了Java环境变量,可以直接使用Java替代


02、安装相关
此相关配置进行修改后,需要重启服务才能生效

原文



  
  
  
  
  
  
  
  

翻译:

定义运行服务账户
标签含义
windows的域,在windows sever系统上,这是很大一个功能块
用户名,可在控制面板 —> 用户管理里面查看
用户密码
允许以服务形式登录
服务启动失败或中断情况下的恢复机制
标签含义
< onfailure action="restart" delay="10 sec"/>第一失败后,执行什么操作。action 共计有3中模式

restart:重新启动服务reboot:重新启动计算机none:无操作

第二失败后,执行什么操作。action 共计有3中模式

restart:重新启动服务reboot:重新启动计算机none:无操作

以上两次都失败后,执行什么操作。action 共计有3中模式

restart:重新启动服务reboot:重新启动计算机none:无操作

windows系统会有一个日志记录,并且计数。间隔多久后重置状态


03、执行管理配置

原文



  
  

  
  
  
  
  
  
  
  Normal
  
  
  15 sec
    
  
  false
  
  
  
  

  
  

翻译:

标签含义
传递给可执行文件的参数。
参数在可执行文件启动时传递给可执行文件,如果此处指定,则重写上方参数。
如果指定,则设置可执行文件的默认工作目录。默认值:存放winSW文件的目录
所需的进程优先级。值:Normal, Idle, High, RealTime, BelowNormal, AboveNormal 默认值:Normal,具体可查看表格
当服务被要求停止时,winsw首先尝试调用GenerateConsoleCtrlEvent 方法(类似于Ctrl+C),然后等待长达15秒的时间,让进程自行退出。如果这样做了,进程关闭还是失败了(或者如果进程没有控制台),然后winsw会调用终止进程的API函数来立即终止服务。这个可选元素允许您改变这个“15秒”的值,这样您就可以控制winsw等待服务进程自行关闭的时间。如何指定时间期限,可参考下面的“onfailure”元素的设置
可选地指定服务关闭的顺序。如果“true”,父进程首先关闭。当主进程是一个控制台时,这是很有用的,它可以响应Ctrl+C命令,并优雅地关闭子进程。
请求停止服务时,winsw通过调用终止进程的API函数来立即终结服务。然而,如果存在“stopargument”元素,winsw将通过使用”stopargument“作为参数,来启动“executable“元素(或者是”stopexecutable“元素)中配置的进程,来代替调用终止进程的API函数。期望通过这种方式来优雅的关闭服务进程。然后,Winsw将等待两个进程自行退出,然后向Windows报告该服务已经终止。
附加参数

进程(线程)的优先级越高,那么就可以分占越多的CPU时间片,每个进程都有相应的优先级,优先级决定它何时运行和占用CPU的时间。最终的优先级共分 32 级,是从 0 到 31 的数值,称为基本优先级别。

进程优先级
优先级标志优先级值
idle (低) IDLE_PRIORITY_CLASS4
Below (低于标准) BELOW_NORMAL_PRIORITY_CLASS
normal (标准) NORMAL_PRIORITY_CLASS7或9
Above (高于标准) ABOVE_NORMAL_PRIORITY_CLASS
high (高) HIGH_PRIORITY_CLASS13
realtime (实时) REALTIME_PRIORITY_CLASS24


04、服务管理

原文


    
    Automatic
    
    
    
    
    
    
    
    
    15 sec
    
    
    1 sec
    
    
    

翻译:

服务管理
标签含义
该元素指定Windows服务的启动模式。它可以是下列值之一:开机、系统、自动或手动。有关详细信息,请参阅MSDN【https://msdn.microsoft.com/en-us/library/aa384896%28v=vs.85%29.aspx】。默认值是“Automatic”。
这个布尔选项允许在定义“自动”启动模式时延时启动。关于延时启动模式,可参阅【https://blogs.technet.microsoft.com/askperf/2008/02/02/ws2008-startup-processes-and-delayed-automatic-start】。 请注意,延时启动模式在早于Windows 7和Windows Server 2008的操作系统中可能失效。在这种情况下,Windows服务安装可能会失败。
指定该服务所依赖的其他服务的id。当服务“X”依赖于服务“Y”时,“X”只能在“Y”运行后运行。可以使用多个元素来指定多个依赖项。
多少秒后调用SetServiceStatus函数的时间,建议值 1 ~10 秒
如果指定了这个可选的元素,那么该服务将被允许与桌面交互,比如显示一个新的窗口和对话框。如果你的程序需要GUI,那么设置如下:请注意,自从引入UAC(Windows Vista及之后的版本)以来,服务不再被允许与桌面交互。在这些操作系统中,所有这一切都是为了允许用户切换到一个单独的窗口来与服务交互。


05、服务进程的日志以及错误信息

原文



  
  
  
  
  
    
  

翻译:

服务进程的日志以及错误信息
标签含义
生成的所有日志设置自定义日志目录,默认为winSW目录
应用程序日志模式,共有一下几种,具体详情可以查看【https://github.com/winsw/winsw/blob/master/doc/loggingAndErrorReporting.md】

append:追加-更新现有日志none:不将日志保存到磁盘reset:重置-启动时擦除日志文件roll:滚动-根据日志的大小roll-by-time:滚动-根据日子时间rotate:滚动-根据日志大小(8个日志,每个10MB)。此模式已被弃用,请使用“滚动”。默认模式:追加


06、环境设置

原文


  
  


  
  

翻译:

标签含义
可以多次指定的可选元素,为子进程设置环境变量。
可以多次指定,让服务包装器从URL检索资源,并将其作为文件放置在本地。这个操作是在服务启动时运行的,在“executable”指定的应用程序启动之前。对于需要身份验证的服务器,必须根据认证的类型指定一些参数。只有基本身份验证需要额外的子参数。支持的身份验证类型是:

none:默认类型,不能指定sspi:微软认证,包括Kerberos、NTLM等。basic:基本身份认证,子参数包括:1)user=“UserName”,2)password=“Password”,3)unsecureAuth=“true”:default=“false” 当传输协议是未加密的HTTP数据传输时,参数“unsecureAuth”才生效。这是一个安全漏洞,因为凭证是用明文发送的!对于SSPI认证,这是不相关的,因为身份验证令牌是加密的。

对于使用HTTPS传输协议的目标服务器这是必须的,因为服务器发出的CA证书是客户端信任的。这通常是服务器在Internet上的情况。当一个组织在内网中使用自发布的CA时,情况可能不是这样。在这种情况下,有必要将CA导入到Windows客户端的证书MMC。可以看一下微软的说明(https://technet.microsoft.com/en-us/librar/cc754841.aspx)。自发布CA必须被导入到计算机的受信任的根证书颁发机构。

默认情况下,如果操作失败(例如,无效的下载地址),“download”命令也不会在服务启动时失败。为了在这种情况下强制下载失败,可以指定“failOnError”布尔属性。


07、其他选项

原文


  
  
  
  



翻译:

标签含义
指示关闭时服务应发出蜂鸣音(如果操作系统支持)。
自定义扩展,具体详情可以查看【https://github.com/kohsuke/winsw/blob/master/doc/extensions/extensions.md】

四、参考链接

winSW链接地址:https://github.com/winsw/winsw/releases
winsw说明
windows 域,windows domain
如何使用其他帐户将Apache ActiveMQ Artemis作为Windows服务运行
设置进程和线程的优先级

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号