
我有一個只需要啟動的服務後另一項服務。是否有某種方法可以將服務配置為僅在另一個服務完成啟動後才啟動?
顯然,我可以使用延遲啟動或編寫批次腳本來執行此操作,但它們都是混亂/臨時的解決方案。所以我想知道我是否可以安排這件事以某種方式發生?
能做到嗎?
答案1
根據我的經驗,創建服務依賴項的最佳方法是使用SC.exe,即在每個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
只要將服務正確部署在Web容器中,當您啟動tomcat時,它就會像其他網路應用程式一樣自動啟動該服務。請注意,部署在 webcontainer 中的 webservice 只是包裝在 servlet 中的服務,它像任何其他 servlet 一樣透過 HTTP 尋找 SOAP 請求。
答案4
您可以使第二個服務依賴第一個服務,然後啟動第二個服務而不是第一個服務。 Windows 將確保在啟動第二個服務之前啟動第一個服務。