Убедитесь, что сервер MongoDB работает и учетные данные действительны в Java

Я программирую пользовательский интерфейс, где пользователь должен иметь возможность ввести URL-адрес и порт, чтобы проверить, работает ли сервер mongoDB. Кроме того, он должен быть в состоянии предоставить учетные данные, когда это необходимо.

Если сервер не работает или учетные данные неверны, я хочу предоставить сообщение для каждого случая. На подобные вопросы ответили здесь:

Проверьте аутентификацию MongoDB с драйвером Java 3.0

как проверить из драйвера, работает ли сервер mongoDB

К сожалению, они используют более старые версии драйвера Java для Монго. Я использую версию 3.2+ Java-драйвера MongoDB, то есть getDB () устарела.

Мое «решение» проблемы выглядит примерно так:

    try {
        String database = "test";
        MongoClient client = null;
        if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
            MongoCredential credentials = MongoCredential.createCredential(username, database, password.toCharArray());
            client = new MongoClient(new ServerAddress(url, Integer.parseInt(port)), Arrays.asList(credentials));
        }
        else {
            client = new MongoClient(url, Integer.parseInt(port));
        }
        MongoDatabase db = client.getDatabase(database);
        db.listCollectionNames().first();
        client.close();
        return true;
    }
    catch (MongoCommandException | MongoSecurityException e) {
        // program does not get in here when credentials are wrong, 
        // only when no credentials are provided, but necessary
    }
    catch (MongoSocketOpenException | MongoTimeoutException e) {
        // only get in here after db.listCollectionNames().first() caused a     timeout
    }

Как я могу управлять:

Узнать, когда сервер mongoDB не работает?Выясните, что учетные данные верны, когда это необходимо?

Редактировать: Если учетные данные неверны (имя пользователя и / или пароль), метод перехватывает толькоMongoTimeoutException, То же самое, если указан неправильный URL-адрес, порт или база данных. Чтобы было ясно, есть и другие исключения, распечатанные, но не пойманные. Разница лишь в том, что при отсутствии пароля и имени пользователя, даже если база данных требует их,MongoCommandException пойман

Ответы на вопрос(0)

Ваш ответ на вопрос