在 Commons Daemon 中正确使用 Procrun 中的 DependsOn 选项
我有一个使用 Commons Daemon 中的 procrun 作为 Windows 服务运行的 java 应用程序。它在 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 结合使用,如果可以,我做错了什么?
I have a java application running as a windows service using procrun from Commons Daemon. It is running on Windows XP SP3.
The application depends on ActiveMQ, and I installed the service via the following batch script
@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.
However, ActiveMQ does not show up as a dependency in the Administrative Tools\Services Dependencies tab.
When I look at HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\TestGenerator\Parameters
, it has the DependsOn
key correctly set to ActiveMQ, but the DependsOnService
key inHKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\TestGenerator\Parameters
does not have ActiveMQ listed.
I am able to set the dependency using SC.exe, but it does not allow me to specify all of the other parameters above.
Can anyone tell me if they have been able to successfully use DependsOn with Procrun and, if so, what am I doing incorrectly?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我终于发现
--DependsOn
选项以及其他一些选项,例如--Startup
仅适用于//IS
或安装命令而不是//US
或 update 命令。在上面的示例中,将
--DependsOn
选项移至//IS
命令将解决该问题如果其他人在使用 procrun 时遇到问题,我写了一些 说明,包括此问题。
I finally figured out that the
--DependsOn
option, together with a few others e.g.--Startup
only work with the//IS
or install command and not the//US
or update command.In the example above moving the
--DependsOn
option to the//IS
command would solve the issueIf anyone else has issues with using procrun I wrote up a few instructions, including this issue.