Проверка состояния сервера Wildfly из приложения

#java #jboss #wildfly

#java #jboss #wildfly

Вопрос:

Мой автономный wildfly запущен на другом компьютере, и я использую его IP-адрес для подключения в моем приложении. Моя цель — убедиться, что он запущен, и установить состояние клиента на основе ответа. Для этого я просто отправляю запрос через ejb, и если я получаю сообщение «Не удалось подключиться к какому-либо серверу», я устанавливаю состояние клиента в автономное. Есть ли способ сделать это лучше? Может быть, API cli для отправки команды для проверки состояния развертывания war? Я знаю, что мы можем проверить это с помощью клиента jboss на компьютере, если мы подключены deployment-info --name=App.war . Но я ничего не смог найти для своего случая. Распространяется ли org.jboss.as.cli.impl wildfly-core на подобный случай?

Ответ №1:

Вы бы хотели использовать 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());
    }
}
 

Это должно вернуть аналогичную информацию в команду CLI.