在 Commons Daemon 中正确使用 Procrun 中的 DependsOn 选项

发布于 2024-12-15 02:14:44 字数 2186 浏览 2 评论 0原文

我有一个使用 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 in
HKEY_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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一身仙ぐ女味 2024-12-22 02:14:44

我终于发现 --DependsOn 选项以及其他一些选项,例如 --Startup 仅适用于 //IS 或安装命令而不是 //US 或 update 命令。

在上面的示例中,将 --DependsOn 选项移至 //IS 命令将解决该问题

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

如果其他人在使用 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 issue

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

If anyone else has issues with using procrun I wrote up a few instructions, including this issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文