JBoss EAP 7.0 检查启动

Posted

技术标签:

【中文标题】JBoss EAP 7.0 检查启动【英文标题】:JBoss EAP 7.0 check startup 【发布时间】:2018-11-04 11:35:25 【问题描述】:

我想检查我的 JBoss EAP 7 是否通过jboss-cli 启动。

使用 JBoss EAP 6,我可以使用以下命令

jboss-cli.bat -c --commands="read-attribute server-state"

当服务器启动时,响应为starting。服务器启动成功后,响应为running

迁移到 JBoss EAP 7.0 后,当服务器启动时,相同的命令返回以下消息。 Failed to connect to the controller: Timeout waiting for the system to boot.服务器启动成功后,返回正常消息running

我的问题是:为什么jboss-cli 在启动之前无法连接到服务器?

【问题讨论】:

这可能意味着管理界面尚未启动并正在侦听。如果您更改$JBOSS_HOME/bin/jboss-cli.sh 中的<command-timeout/>,它可能会起作用。 【参考方案1】:

在 EAP 7.x 和 EAP 6.3.0 或更高版本中,您可以配置jboss.as.management.blocking.timeout 系统属性来调整等待服务容器稳定性的超时(秒)。 通过 CLI 连接后尝试设置此参数。

从 EAP 6.3.0.ER8 开始,在 jboss.as.controller 中有一个新类:BlockingTimeout。此类加载系统属性 jboss.as.management.blocking.timeout 的值或默认为 300(秒)。 Note: This property is not a timeout per deployment but a timeout on container stability and if jboss.as.management.blocking.timeout is reached during startup then all applications will be undeployed and the container shutdown. The reasoning behind this is that having a half-working server is potentially dangerous as you may not notice major failures. 因此,如果您的应用程序无法在给定的超时值内加载,CLI 将抛出错误Failed to connect to the controller: Timeout waiting for the system to boot

jboss-cli.sh --connect --controller=IP:PORT --timeout=40000 将超时值配置为大于服务器启动所需的时间。

【讨论】:

有趣的是,我还没有设置jboss.as.management.blocking.timeout,但是大约 2 秒后会出现超时。大约一分钟后,服务器正确部署了所有应用程序并且 CLI 正常工作。 您可以尝试通过-CLI 重启服务器设置此系统属性:/system-property=jboss.as.management.blocking.timeout:add(value=600) 并检查它是否有任何变化 我试过了,但没有任何改变。服务器启动时间为 34688ms 这意味着问题只是CLI,我们现在可以推出EAP部署延迟。尝试使用jboss-cli.sh --connect --controller=10.10.10.10:9999 --timeout=40000,这应该可以,只需正确添加您的EAP端口,IP。 对不起,不知何故我没有看到通知。使用--timeout=40000,cli 会等待服务器运行,这可以解决问题。尽管如此,我还是想知道为什么 starting 消息消失了?【参考方案2】:

实际的命令行是 ./jboss-cli.sh --connect command=":read-attribute(name=server-state)"

【讨论】:

以上是关于JBoss EAP 7.0 检查启动的主要内容,如果未能解决你的问题,请参考以下文章

一个jboss启动shell脚本

在 DHCP 服务器 Linux 上启动 Jboss EAP 和 UnknownHostException

深入理解 JBoss 7/WildFly Domain 模式启动过程

SpringBoot jars 作为 JBoss EAP 7.0 中的自定义模块

无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源

将基于 JSF 1.2 的 Web 应用程序部署到 JBoss EAP 7.0