0

我一直在使用http://commons.apache.org/proper/commons-daemon/为 Wildfly 启动创建 Windows 服务(使用某些博客中建议的 exe 模式)。问题是,该服务立即被标记为正在运行。我还有一些其他服务只有在 Wildfly 启动并运行后才允许启动。使这些服务依赖于 Wildfly 服务是行不通的,因为启动需要 20-60 秒。

有没有办法让 procrun 在服务被标记为运行之前等待返回值或至少等待固定时间?

4

1 回答 1

0

我不使用该服务包装器,而是使用 wildfly 附带的服务包装器(在 docs\contrib\scripts\service 文件夹中。(参见http://www.mastertheboss.com/jboss-server/jboss-configuration/run-jboss -as-service-howto了解详细信息)。

但我怀疑这个问题也是我看到的。wildfly 启动是一个快速的过程 - 1 或 2 秒 - 但接下来需要时间的是部署您的 ear 或 war 文件,以便它实际上可以做一些有用的事情。您可以通过 myEar.ear.deployed 文件的出现来判断这是什么时候发生的。使用 wildfly 服务包装器,一切都在 service.bat 脚本中完成,启动 wildfly 服务基本上意味着运行 :commandStart 标签处的代码。

:cmdStart
if /I "%~1"=="/name" (
if not "%~2"=="" (
  set SHORTNAME="%~2"
  )
)
%PRUNSRV% start %SHORTNAME%
echo Service %SHORTNAME% starting...
goto cmdEnd

在服务启动的回声之后,您可以休眠 30 s timeout /t 30 /nobreak 或者您可以尝试查找 .deployed 文件并循环直到它在那里或 .failed 文件在那里。(简单的超时更容易!)

于 2020-10-28T14:20:57.650 回答