sql >> Databasteknik >  >> NoSQL >> MongoDB

Kontrollera MongoDB-autentisering med Java 3.0-drivrutin

MongoClient-konstruktörerna ger inga anslutningsrelaterade undantag. Snarare återkommer de direkt efter att ha startat en eller flera bakgrundstrådar som försöker upprätta en anslutning och autentisera baserat på de angivna referenserna.

Det är bara när en applikation använder MongoClient för att utföra någon operation på MongoDB-servern som ett undantag kommer att kastas. Det undantaget är dock ett allmänt timeout-undantag som indikerar att drivrutinen inte kunde hitta en lämplig server för operationen innan servervalets timeout löper ut. Till exempel:

    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
    }

kommer att kasta ett MongoTimeoutException efter 1 sekund. Även om inget MongoSecurityException kastas, kommer meddelandet från MongoTimeoutException att innehålla relevant information. Till exempel, när du ansluter till en replikuppsättning med tre medlemmar när en av servrarna är nere och autentiseringen misslyckades på de återstående två, kommer meddelandefältet för MongoTimeoutException att vara något som:

Tidsgränsen gick efter 1000 ms i väntan på en server som matcharReadPreferenceServerSelector{readPreference=primary}. Klientvyn av klustertillståndet är {type=OKNÄNT, servrar=[{adress=localhost:27017,type=OKNÄNT, tillstånd=CONNECTING,exception={com.mongodb.MongoSocketOpenException:Exception openingsocket}, orsakad av {java.net.ConnectException:Connection refused}},{address=localhost:27018, type=OKNOWN, state=CONNECTING,exception={com.mongodb.MongoSecurityException:Exceptionauthenticating MongoCredential{mechanism=null, userName='username',source='admin', password=, mechanismProperties={}}}, orsakad av{com.mongodb.MongoCommandException:Kommandot misslyckades med fel 18:'Autentisering misslyckades.' på server localhost:27018. Det fullständiga svaret är { "ok" :0.0, "code" :18, "errmsg" :"Autentisering misslyckades." }}}]




  1. Namnutrymmen i Redis?

  2. Hur man skapar ett textindex i MongoDB

  3. MongoDB varva ner flera arrayer

  4. Hur man använder Memcached With Yii2 Framework