
Eu tenho um serviço que precisa ser iniciado apenasDEPOISoutro serviço. Existe alguma maneira de configurar o serviço para iniciar apenas quando outro terminar de iniciar?
Obviamente, eu poderia usar um início atrasado ou escrever um script em lote para fazer isso, mas ambas são soluções confusas/temporárias. Então eu me perguntei se posso agendar para que isso aconteça de alguma forma?
Isso pode ser feito?
Responder1
Na minha experiência, a melhor maneira de criar dependências de serviço, sem vasculhar o registro (algo que não é seguro, seguro ou facilmente programável == repetível) é usar SC.exe - o utilitário de controle de serviço fornecido com todas as versões do Windows desde Win2003.
Você pode abrir uma janela de comando e digitar sc
para obter ajuda completa, mas a essência é:
sc create newservice binpath= c:\nt\system32\newserv.exe type= own start= auto depend= "netbios"
Cria um novo serviço, denominado "newservice", aponta para o seu caminho, faz com que ele inicie automaticamente e o torna dependente do serviço NetBIOS.
Leia mais sobre SCaqui.
Responder2
Você tem que usar o editor de registro (até onde eu sei) para fazer o serviço depender do outro servidor. Localize odependenteservice em HKLM\SYSTEM\CurrentControlSet\services
e adicione um REG_MULTI_SZ
valor chamado DependOnService
. Coloque o nome do serviço (não o nome de exibição, mas o mesmo nome da chave de registro) como um valor.
Quando você reinicia agora, o Windows só iniciará seu serviço dependente depois que o serviço do qual você depende for iniciado. Da mesma forma, se o serviço do qual ele depende falhar ao iniciar, o serviço dependente também não será iniciado.
Responder3
Contanto que o serviço seja implantado corretamente no webcontainer, quando você inicia o Tomcat, ele inicia automaticamente o serviço como qualquer outro aplicativo da web. Esteja ciente de que o webservice implantado no webcontainer nada mais é do que um serviço envolvido em um servlet que procura solicitações SOAP por HTTP como qualquer outro servlet.
Responder4
Você poderia tornar o segundo serviço dependente do primeiro serviço e, em seguida, iniciar o segundo serviço em vez do primeiro serviço. O Windows garantirá que o primeiro serviço seja iniciado antes de iniciar o segundo serviço.