当前位置: 首页 > 知识库问答 >
问题:

如何检查我的应用程序是否由Wildfly 8.2正确部署。1以编程方式?

宓诚
2023-03-14

我需要检查由Wildfly 8.2部署的应用程序的部署状态。1以编程方式(最好是java)。就我而言,有多种方法可以实现这一目标:

  1. 监视部署文件夹中的信号量文件(如部署时为war文件创建了已部署文件)。
  2. 通过调用在war文件成功部署时应该可用的rest服务进行检查
  3. 使用JMX mbean

可能还有其他方法,我还不知道。但我更感兴趣的是学习使用JMX MBean的方法。但不幸的是,我的在线搜索没有给我任何好的方向。如果有人能解释这一点,那将是非常有帮助的。

共有1个答案

华永逸
2023-03-14

您可以使用管理操作来检查部署是否存在。它有点旧,但是有一个关于解密API的教程。

try (final ModelControllerClient client = ModelControllerClient.Factory.create(InetAddress.getLocalHost(), 9990)) {
    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 ModelNode deployments = Operations.readResult(result);
        for (String deploymentName : deployments.keys()) {
            final ModelNode deploymentDetails = deployments.get(deploymentName);
            // do stuff
        }
    } else {
        throw new RuntimeException("Failed to list deployments: " + Operations.getFailureDescription(result).asString());
    }
}

从结果中,您可以阅读有关部署的各种信息。输出如下所示:

{
    "content" => [{"hash" => bytes {
        0x77, 0x1f, 0x1a, 0xa1, 0x9e, 0x46, 0x11, 0x75,
        0x2f, 0x58, 0xce, 0x1b, 0x01, 0x29, 0x45, 0x43,
        0x16, 0x87, 0x22, 0x9a
    }}],
    "enabled" => true,
    "enabled-time" => 1443485828919L,
    "enabled-timestamp" => "2015-09-28 17:17:08,919 PDT",
    "name" => "batch-chunk.war",
    "owner" => undefined,
    "persistent" => true,
    "runtime-name" => "batch-chunk.war",
    "subdeployment" => undefined,
    "subsystem" => {
        "jaxrs" => undefined,
        "batch" => undefined,
        "undertow" => undefined
    }
}

如果你想看看它是否启用,你可以做

if (!deploymentDetails.get("enabled")) {
    throw new RuntimeException(String.format("Deployment %s is not enabled", deploymentName);
}
 类似资料:
  • 我们以编程方式安装了应用程序。 如果应用程序已安装在设备中,则应用程序将自动打开。 指引我。我完全不知道。谢谢。

  • 问题内容: 在C语言中,如何以编程方式找出Linux / Ubuntu上是否已在运行某个进程,以避免该进程两次启动?我正在寻找类似于pidof的东西。 问题答案: 您可以进入这些条目并在文件中检查过程,也可以在链接上执行操作(以下使用第一种方法)。

  • 我和我的团队正试图自动化我们的一些流程,其中包括编程远程部署。我的一个同事问了我一个关于JBoss部署的问题: JBoss中的部署类型,无论是JMX还是文件系统(将应用程序包复制到部署文件夹),是否以任何方式影响应用程序? 我知道JMX部署是临时的,而文件系统不是。除此之外,还有什么区别吗?我做了研究,但没有发现任何有用或我能理解的东西(我是中级Java程序员的初学者),只有关于部署应用程序的不同

  • 问题内容: 正如问题所指出的那样,我主要想知道我的代码是否正在模拟器中运行,但也想知道正在运行或正在模拟的特定iphone版本。 编辑:我在问题名称中添加了“以编程方式”一词。我的问题的关键是能够根据正在运行的版本/模拟器动态地包含/排除代码,因此我真的在寻找可以提供此信息的预处理器指令之类的东西。 问题答案: 已经问过,但标题却大不相同。 为iPhone编译时Xcode设置了什么#define

  • 我们在构建过程中使用gradle。我们希望我们的脚本能够确定tomcat是否正确部署了我们的web应用程序,现在我们是否需要使用另一个脚本从中恢复。 1) 如何确定tomcat是否正确部署了战争?除了检查日志文件之外,还有其他更合适的方法吗?(感觉不对) 2)如何确定webapp是否正常启动?(没有错误,比如spring autowiring失败)除了检查日志文件,还有其他更合适的方法吗?(再次感

  • 问题内容: 如何检查Glassfish DAS是否以编程方式运行,即使已将其部署在本地计算机还是远程计算机上? 使用Java6 问题答案: 我找到了一种方法来检查DAS是否已启动,而不是Linux脚本。通过这种方式,我的应用程序和DAS都在同一台计算机上还是每台安装在不同的计算机上都没有关系。 }