从应用程序检查 Wildfly 服务器状态

Check Wildfly server state from application

我的 wildfly standalone 运行 在另一台机器上,我使用它的 IP 在我的应用程序中进行连接。我的目标是确保它是 运行 并根据答案设置客户端状态。为此,我只需通过 ejb 发送一个查询,如果我收到“无法连接到任何服务器”,我将客户端状态设置为脱机。有没有办法做得更好?也许是一个 cli api 来发送检查 war 部署状态的命令?我知道如果我们与 deployment-info --name=App.war 连接,我们可以从机器上的 jboss 客户端检查它。但是我找不到适合我的情况的任何东西。 wildfly-core 的 org.jboss.as.cli.impl 是否涵盖了这样的案例?

您想使用 ModelControllerClient API 进行查询。您可以阅读部署资源以获取信息。类似于:

try (ModelControllerClient client = ModelControllerClient.Factory.create(address, 9990)) {
    final ModelNode address = Operations.createAddress("deployment", "App.war");
    final ModelNode op = Operations.createReadResourceOperation(address);
    op.get("include-runtime").set(true);
    final ModelNode outcome = client.execute(op);
    if (Operations.isSuccessfulOutcome(outcome)) {
        // do something
    } else {
        throw new RuntimeException(Operations.getFailureDescription(outcome).asString());
    }
}

那应该return 类似于 CLI 命令的信息。