使用 Java Wildfly 9 本机管理 API 显示部署的应用程序状态

Displaying deployed app status with Java Wildfly 9 native management API

我正在尝试使用 Wildfly 9 本机管理 API 来显示我部署的应用程序的状态。 jboss-cli 执行和结果如下:

jboss-cli.sh --connect --controller=myserver.com:9990 --commands="/deployment=my-deployment.war :read-attribute(name=status)"
{
    "outcome" => "success",
    "result" => "OK"
}

使用下面的代码,我能够确定应用程序是否 已启用 ,但如果它们已启动且 运行:

则无法确定
ModelNode op = new ModelNode();
op.get("operation").set("read-children-names");
op.get("child-type").set(ClientConstants.DEPLOYMENT);

任何人都可以协助将我的 jboss-cli 命令翻译成 Java 吗?我也尝试连接到部署扫描器子系统,但这似乎对我没有任何用处。

这个来自类似主题的答案对我们有用(有一些小的调整):

您可以使用read-children-resource操作获取部署资源。

像下面这样的东西应该可以工作。

try (final ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getLocalHost(), 9990)) {
    ServerHelper.waitForStandalone(client, 20L);
    final ModelNode op = Operations.createOperation("read-children-resources");
    op.get(ClientConstants.CHILD_TYPE).set(ClientConstants.DEPLOYMENT);
    final ModelNode result = client.execute(op);
    if (Operations.isSuccessfulOutcome(result)) {
        final List<Property> deployments = Operations.readResult(result).asPropertyList();
        for (Property deployment : deployments) {
            System.out.printf("Deployment %-20s enabled? %s%n", deployment.getName(), deployment.getValue().get("enabled"));
        }
    } else {
        throw new RuntimeException(Operations.getFailureDescription(result).asString());
    }
}