我正在尝试使用jar创建一个运行java的Windows服务。
创建服务的资源是:
service_name="Service"
service_file="C:\\chef_solo\\utils\\service-17.jar"
java_exe="#{java_home_win}\\bin\\java.exe"
binPath="#{java_exe} -jar #{service_file} "
execute "Installing #{service_name}" do
command "sc create \"#{service_name}\" binPath= \"#{binPath}\" obj= \".\\#{gst_user}\" password= \"#{gst_pwd}\" start= auto displayname= \"GS Translation Service\""
action :nothing
end
服务已创建,但运行时,我收到一条错误消息:
Windows could not start the Service service on 192.168.0.10. Error 1053: The service did not respond to the start or control request in a timely fashion.
我猜这是因为当我手动运行时,需要大约45秒直到服务启动并且端口打开。 我怎么能让它等待?还是有其他问题我不明白?
谢谢。
加布里埃尔
答案 0 :(得分:0)
解决方案在Microsoft's support site:
当服务启动时,服务会与服务控制管理器通信服务必须启动多长时间(服务的超时期限)。如果服务控制管理器未收到"服务已启动"在此超时期限内从服务发出通知,服务控制管理器终止承载服务的进程。
此超时时间通常小于30秒。如果不调整此超时期限,则在尝试调试时,服务控制管理器将结束该过程和附加的调试器。
要调整此超时期限,请按以下步骤操作:
在注册表编辑器中,找到,然后右键单击以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
指向新建,然后点击 DWORD值。
在注册表编辑器的右窗格中,请注意选择新值#1 (新注册表项的名称)进行编辑。
键入 ServicesPipeTimeout 以替换新值#1 ,然后按ENTER键。
右键单击在步骤c中创建的 ServicesPipeTimeout 注册表项,然后单击修改。将出现编辑DWORD值对话框。
在值数据文本框中,键入 TimeoutPeriod ,然后单击“确定”。 行
注意: TimeoutPeriod 是占位符,表示您要为服务设置的超时时间(以毫秒为单位)的值。例如,如果要将超时时间设置为24小时(86400000毫秒),请键入86400000。
重新启动计算机。您必须重新启动计算机以使Service Control Manager应用此更改。