Правильное использование опции DependsOn в Procrun от Commons Daemon - PullRequest
1 голос
/ 12 ноября 2011

У меня есть Java-приложение, работающее как служба Windows, использующее procrun от Commons Daemon. Он работает на Windows XP SP3.

Приложение зависит от ActiveMQ , и я установил службу с помощью следующего пакетного сценария

@echo off

if "%OS%" == "Windows_NT" setlocal

set "APPLICATION_SERVICE_HOME=%cd%"
set EXECUTABLE_NAME=TestGenerator.exe
set EXECUTABLE=%APPLICATION_SERVICE_HOME%\%EXECUTABLE_NAME%
set SERVICE_NAME=TestGenerator

set CG_START_CLASS=net.test.testgenerator.startup.TestGeneratorApp
set CG_STOP_CLASS=%CG_START_CLASS%
set CG_START_METHOD=controlTestGeneratorService
set CG_STOP_METHOD=%CG_START_METHOD%
set CG_START_PARAMS=start
set CG_STOP_PARAMS=stop
set CG_DEPENDS_ON=ActiveMQ
set CG_STARTUP_TYPE=auto

set PR_DESCRIPTION=Test Generator v1.0
set "PR_INSTALL=%EXECUTABLE%"
set "PR_LOGPATH=%APPLICATION_SERVICE_HOME%\logs"
set  "PR_CLASSPATH=%APPLICATION_SERVICE_HOME%;%APPLICATION_SERVICE_HOME%\testgenerator.jar;%APPLICATION_SERVICE_HOME%\lib"
set PR_DISPLAYNAME=Test Generator Service

echo Installing service '%SERVICE_NAME%' ...

"%EXECUTABLE%" //IS//%SERVICE_NAME%  --Startup %CG_STARTUP_TYPE%  --StartClass %CG_START_CLASS% --StopClass %CG_STOP_CLASS% 
"%EXECUTABLE%" //US//%SERVICE_NAME% --StartMode jvm --StopMode jvm --DependsOn %CG_DEPENDS_ON% 
"%EXECUTABLE%" //US//%SERVICE_NAME% --StartMethod %CG_START_METHOD% --StopMethod  %CG_STOP_METHOD% 
"%EXECUTABLE%" //US//%SERVICE_NAME% --StartParams %CG_START_PARAMS% --StopParams %CG_STOP_PARAMS% 
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%APPLICATION_SERVICE_HOME%\temp;" --JvmMs 128 --JvmMx 256
echo The service '%SERVICE_NAME%' was installed.

Однако ActiveMQ не отображается как зависимость на вкладке Администрирование \ Зависимости служб.

Когда я смотрю на HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\TestGenerator\Parameters, ключ DependsOn правильно установлен на ActiveMQ, но ключ DependsOnService HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\TestGenerator\Parameters не имеет ActiveMQ в списке.

Я могу установить зависимость с помощью SC.exe, но он не позволяет мне указать все остальные параметры выше.

Может кто-нибудь сказать мне, если они смогли успешно использовать DependsOn с Procrun и, если да, что я делаю неправильно?

1 Ответ

1 голос
/ 19 ноября 2011

Я наконец понял, что опция --DependsOn вместе с несколькими другими, например, --Startup работает только с //IS или командой установки, но не //US или командой обновления.

В приведенном выше примере перемещение параметра --DependsOn в команду //IS решит проблему

"%EXECUTABLE%" //IS//%SERVICE_NAME%  --Startup %CG_STARTUP_TYPE%  --StartClass %CG_START_CLASS% --StopClass %CG_STOP_CLASS% --DependsOn %CG_DEPENDS_ON% 

Если у кого-то еще есть проблемы с использованием procrun, я написал несколько инструкций , включая эту проблему.

...