Prüfen Sie, ob der MongoDB-Server ausgeführt wird und ob die Anmeldeinformationen in Java gültig sind.

Ich programmiere eine Benutzeroberfläche, in der ein Benutzer die URL und den Port eingeben kann, um zu überprüfen, ob ein MongoDB-Server ausgeführt wird. Außerdem sollte er in der Lage sein, bei Bedarf Anmeldeinformationen bereitzustellen.

Wenn der Server nicht ausgeführt wird oder die Anmeldeinformationen falsch sind, möchte ich für jeden Fall eine Nachricht bereitstellen. Ähnliche Fragen wurden hier beantwortet:

Überprüfen Sie die MongoDB-Authentifizierung mit dem Java 3.0-Treiber

wie man von einem Treiber aus überprüft, ob der mongoDB Server läuft

Leider verwenden sie ältere Versionen des Java-Treibers für Mongo. Ich verwende die Version 3.2+ des MongoDB-Java-Treibers, wobei getDB () veraltet ist.

Meine "Lösung" für das Problem sieht ungefähr so aus:

    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
    }

Wie kann ich es schaffen:

Finden Sie heraus, wenn der MongoDB-Server nicht läuft?Stellen Sie bei Bedarf fest, dass die Anmeldeinformationen korrekt sind?

Bearbeiten Wenn die Anmeldeinformationen falsch sind (Benutzername und / oder Passwort), fängt die Methode nur dasMongoTimeoutException. Es ist dasselbe, wenn die falsche URL oder der falsche Port oder die falsche Datenbank angegeben wird. Um klar zu sein, gibt es andere Ausnahmen, die ausgedruckt, aber nicht abgefangen werden. Der einzige Unterschied ist, wenn Sie kein Passwort und keinen Benutzernamen angeben, obwohl die Datenbank dies erfordert, dass dasMongoCommandException ist gefange

Antworten auf die Frage(0)

Ihre Antwort auf die Frage