厨师windows安装java服务不工作

时间:2017-08-05 18:12:09

标签: java windows chef

我正在尝试使用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秒直到服务启动并且端口打开。 我怎么能让它等待?还是有其他问题我不明白?

谢谢。

加布里埃尔

1 个答案:

答案 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应用此更改。