Verifique se o servidor MongoDB está em execução e se as credenciais são válidas em Java

Estou programando uma interface do usuário em que um usuário possa inserir a URL e a porta para verificar se um servidor mongoDB está em execução. Além disso, ele deve ser capaz de fornecer credenciais quando necessário.

Se o servidor não estiver em execução ou as credenciais estiverem erradas, desejo fornecer uma mensagem para cada caso. Perguntas semelhantes foram respondidas aqui:

Verifique a autenticação do MongoDB com o driver Java 3.0

como verificar em um driver, se o servidor mongoDB estiver em execução

Infelizmente, eles usam versões mais antigas do driver Java para o mongo. Estou usando a versão 3.2+ do driver java MongoDB, onde o getDB () está obsoleto.

Minha "solução" para o problema é mais ou menos assim:

    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
    }

Como posso gerenciar:

Descobrir quando o servidor mongoDB não está sendo executado?Descubra que as credenciais estão corretas, quando necessário?

Editar: Quando as credenciais estão incorretas (nome de usuário e / ou senha), o método captura apenas oMongoTimeoutException. É o mesmo quando o URL ou porta ou banco de dados errado é fornecido. Para deixar claro, existem outras exceções impressas, mas não capturadas. A única diferença é que, ao fornecer nenhuma senha e nome de usuário, mesmo que o banco de dados exija, então oMongoCommandException está capturado

questionAnswers(0)

yourAnswerToTheQuestion