sql >> Database teknologi >  >> NoSQL >> MongoDB

Tjek MongoDB-godkendelse med Java 3.0-driver

MongoClient-konstruktørerne kaster ikke nogen forbindelsesrelaterede undtagelser. De vender snarere tilbage umiddelbart efter at have startet en eller flere baggrundstråde, der forsøger at etablere en forbindelse og autentificere baseret på de angivne legitimationsoplysninger.

Det er kun, når en applikation bruger MongoClient til at udføre en eller anden operation på MongoDB-serveren, at en undtagelse vil blive kastet. Denne undtagelse er dog en generisk timeout-undtagelse, der indikerer, at driveren ikke kunne finde en passende server til operationen, før timeoutet for servervalg udløber. For eksempel:

    MongoClient client = new MongoClient(asList(new ServerAddress("localhost"), new ServerAddress("localhost:27018")),
                                         singletonList(MongoCredential.createCredential("username",
                                                                                        "admin",
                                                                                        "bad".toCharArray())),
                                         MongoClientOptions.builder().serverSelectionTimeout(1000).build());


    try {
        client.getDB("admin").command("ping");
    } catch (MongoTimeoutException e) {
        // do something
    }

vil kaste en MongoTimeoutException efter 1 sekund. Selvom der ikke kastes nogen MongoSecurityException, vil meddelelsen fra MongoTimeoutException indeholde relevante detaljer. For eksempel, når der oprettes forbindelse til et replikasæt med tre medlemmer, når en af ​​serverne er nede, og godkendelse mislykkedes på de resterende to, vil meddelelsesfeltet i MongoTimeoutException være noget som:

Timeout efter 1000 ms, mens man ventede på en server, der matcherReadPreferenceServerSelector{readPreference=primary}. Klientvisning af klyngetilstand er {type=UNKNOWN, servers=[{address=localhost:27017,type=UNKNOWN, state=CONNECTING,exception={com.mongodb.MongoSocketOpenException:Exception openingsocket}, forårsaget af {java.net.ConnectException:Forbindelse nægtet}},{address=localhost:27018, type=UNKNOWN, state=CONNECTING,exception={com.mongodb.MongoSecurityException:Exceptionauthenticating MongoCredential{mechanism=null, userName='username',source='admin', password=, mechanismProperties={}}}, forårsaget af{com.mongodb.MongoCommandException:Kommando mislykkedes med fejl 18:'Autentificering mislykkedes.' på server localhost:27018. Det fulde svar er { "ok" :0.0, "code" :18, "errmsg" :"Godkendelse mislykkedes." }}}]




  1. Hvorfor få fejlen mongod død, men subsys låst og utilstrækkelig ledig plads til journalfiler på Linux?

  2. MongoDB $dateFromString Format Specifiers

  3. Formatering af ISODate fra Mongodb

  4. MongoDB .Net driver 2.0 Pull (fjern element)