检查Wildfly服务器是否正在运行我的应用程序?

5
我想知道如何检查我的Wildfly服务器是否正在运行以及WebApp是否已部署?
目前,我只检查服务器是否正在运行。
public static boolean checkServerAvailable() {
    try {

        String url = Constants.URL_APP + ":" + Constants.APPSERVER_PORT;

        HttpURLConnection.setFollowRedirects(false);
        // note : you may also need
        // HttpURLConnection.setInstanceFollowRedirects(false)
        HttpURLConnection con = (HttpURLConnection) new URL(url)
                .openConnection();
        con.setRequestMethod("HEAD");

        if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
            return true;
        }

        else
            return false;

    } catch (Exception e) {
        return false;
    }
}

但我需要知道Wildfly服务器是否也成功部署了我的Web应用程序。

3个回答

3
首先,您可以将您的Web应用程序URL添加到上面创建的URL中。 例如,不是连接到http://localhost:8080/并查找HTTP 200响应,而是连接到http://localhost:8080/yourApp并进行相同操作。这意味着您需要在根目录下有某些内容来响应。
更好的解决方案可能是在您的Web应用程序中拥有“心跳”或“状态”服务。这将类似于http://localhost:8080/yourApp/status。该方法或服务只需返回200即可表示服务正常运行。但它也可以真正检查您的应用程序是否健康。例如,它可以检查可用内存或确保数据库正常运行或其他多种事情。您展示的代码将只使用状态服务的完整URL。

你可以使用管理控制台检查Web应用程序是否已部署。难道WildFly没有提供此信息的其他服务吗? - John Donn
增加状态端点是个好主意。在这个端点上,你不仅可以检查应用程序是否已部署,还可以检查它的健康状况。在这个状态端点上,可以对数据库连接和其他依赖服务进行健全性检查。 - jpkroehling

2
你可以使用WildFly提供的管理API。这里针对不同版本的WildFly进行了描述。
对于WildFly9 - 请参阅 https://wildscribe.github.io/Wildfly/9.0.0.Final/deployment/index.html 您可以使用以下URL来检查部署的状态。您需要一个管理用户进行身份验证。
独立模式:
http://localhost:9990/management/deployment/<deployment_name>

针对域模式:
http://localhost:9990/management/host/<host_name>/server/<serer_name>/deployment/<deployment_name>

示例JSON响应(假设您部署了一个包含一些子部署的EAR文件):
{
"content": [{
    "hash": {
        "BYTES_VALUE": "2gH7ddtUxsbzBJEJ/z4T1jYERRU="
    }
}],
"enabled": true,
"enabled-time": 1468861076770,
"enabled-timestamp": "2016-07-18 18:57:56,770 CEST",
"name": "myapplication.ear",
"owner": null,
"persistent": true,
"runtime-name": "myapplication.app.ear",
"subdeployment": {
    "myapplication.impl.jar": null,
    "myapplication.web.war": null
},
"subsystem": null

}

使用curl的示例请求:
curl --digest -D - http://localhost:9990/management --header "Content-Type: application/json" -d '{"operation":"read-resource", "include-runtime":"true", "address":["deployment","myapplication.app.ear"] }' -u user:password

需要一个用户(管理用户)和密码吗? - Marc Meister
@MarcMeister 是的,需要一个管理用户进行身份验证。 - Aparna Chaudhary
1
你在哪里激活了管理用户以进行以下请求:http://localhost:9990/management/deployment/<deployment_name>?我需要在我的代码中添加一个函数,该函数将发送该URL的请求,并返回true或false,以判断服务器和应用程序是否正在运行。 - Marc Meister

0

我正在寻找一些东西来检查Wildfly是否运行,在这里我看到:

systemctl status wildfly

而且它们非常有用:

systemctl stop wildfly
systemctl restart wildfly
systemctl start wildfly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接