我有一个仅需要启动的服务后另一项服务。是否有某种方法可以将该服务配置为仅在另一项服务启动完成后才启动?
显然,我可以使用延迟启动或编写批处理脚本来执行此操作,但它们都是混乱的/临时的解决方案。所以我想知道我是否可以安排这种情况以某种方式发生?
能做到吗?
答案1
根据我的经验,创建服务依赖关系的最佳方法是使用 SC.exe - 自 Win2003 以来每个 Windows 版本都附带的服务控制实用程序,而无需在注册表中翻找(不安全、不可靠或不易编写脚本 == 可重复)。
您可以打开命令窗口并输入sc
以获得完整的帮助,但其要点是:
sc create newservice binpath= c:\nt\system32\newserv.exe type= own start= auto depend= "netbios"
创建一个名为“newservice”的新服务,指向其路径,使其自动启动并使其依赖于 NetBIOS 服务。
了解有关 SC 的更多信息这里。
答案2
您必须使用注册表编辑器(据我所知)使服务依赖于其他服务器。找到受抚养人在 中创建一个服务HKLM\SYSTEM\CurrentControlSet\services
,并添加一个REG_MULTI_SZ
名为 的值DependOnService
。将服务名称(不是显示名称,而是与其注册表项相同的名称)作为值。
现在重新启动后,Windows 只会在您依赖的服务启动后启动依赖的服务。同样,如果它依赖的服务无法启动,依赖的服务也不会启动。
答案3
只要服务在 webcontainer 中正确部署,当您启动 tomcat 时,它就会像任何其他 web 应用程序一样自动启动该服务。请注意,部署在 webcontainer 中的 webservice 只不过是包装在 servlet 中的服务,它像任何其他 servlet 一样通过 HTTP 查找 SOAP 请求。
答案4
您可以使第二个服务依赖于第一个服务,然后启动第二个服务而不是第一个服务。Windows 将确保在启动第二个服务之前先启动第一个服务。