5

У меня есть сервис, который нужно запустить только ПОСЛЕ другого сервиса. Есть ли способ настроить службу так, чтобы она запускалась только после завершения запуска другой?

Очевидно, я мог бы использовать отложенный запуск или написать пакетный скрипт, чтобы сделать это, но они оба грязные / временные решения. Так что я подумал, могу ли я запланировать, чтобы это произошло как-нибудь?

Это можно сделать?

4 ответа4

5

Вы должны использовать редактор реестра (насколько я знаю), чтобы сервис зависел от другого сервера. Найдите зависимую службу в HKLM\SYSTEM\CurrentControlSet\services и добавьте значение REG_MULTI_SZ под названием DependOnService Введите в качестве значения имя службы (не отображаемое имя, но то же имя, что и его ключ регистрации).

Когда вы перезагрузите компьютер сейчас, Windows запустит зависимую службу только после того, как запущенная вами служба будет зависеть. Аналогично, если служба, от которой она зависит, не запускается, ваша зависимая служба также не запустится.

5

По моему опыту, лучший способ создания сервисных зависимостей, без рытья в реестре (что не является безопасным, безопасным или легко поддающимся скрипту == повторяющимся), - это использовать SC.exe - утилита управления сервисами, включенная в каждую версию Windows, так как Win2003.

Вы можете открыть командное окно и набрать sc чтобы получить полную справку, но суть этого такова:

sc create newservice binpath= c:\nt\system32\newserv.exe type= own start= auto depend= "netbios"

Создает новый сервис с именем "newservice", указывает на его путь, автоматически запускает его и делает его зависимым от сервиса NetBIOS.

Узнайте больше о SC здесь.

2

Если служба правильно развернута в веб-контейнере, при запуске tomcat она автоматически запускает службу, как и любое другое веб-приложение. Помните, что веб-сервис, развернутый в веб-контейнере, - это не что иное, как сервис, заключенный в сервлет, который ищет SOAP-запрос по HTTP, как любой другой сервлет.

1

Вы можете сделать второй сервис зависимым от первого сервиса, а затем запустить второй сервис вместо первого сервиса. Windows убедится, что первый сервис запущен, прежде чем запускать второй.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .