Konstruktory MongoClient nie zgłaszają żadnych wyjątków związanych z łącznością. Zamiast tego wracają natychmiast po uruchomieniu jednego lub więcej wątków w tle, które próbują nawiązać połączenie i uwierzytelnić się na podstawie dostarczonych poświadczeń.
Wyjątek zostanie zgłoszony tylko wtedy, gdy aplikacja używa MongoClient do wykonania jakiejś operacji na serwerze MongoDB. Jednak ten wyjątek jest ogólnym wyjątkiem limitu czasu wskazującym, że sterownik nie znalazł odpowiedniego serwera dla operacji przed upływem limitu czasu wyboru serwera. Na przykład:
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
}
zgłosi MongoTimeoutException po 1 sekundzie. Chociaż nie zostanie zgłoszony żaden wyjątek MongoSecurityException, komunikat MongoTimeoutException będzie zawierał odpowiednie szczegóły. Na przykład podczas łączenia się z trzyelementową repliką, gdy jeden z serwerów nie działa, a uwierzytelnianie na pozostałych dwóch nie powiodło się, pole komunikatu wyjątku MongoTimeoutException będzie wyglądało następująco:
Przekroczono limit czasu po 1000 ms podczas oczekiwania na serwer, który pasuje do ReadPreferenceServerSelector{readPreference=primary}. Widok klienta stanu klastra to {type=NIEZNANY, server=[{address=localhost:27017,type=NIEZNANY, state=CONNECTING,exception={com.mongodb.MongoSocketOpenException:Exception openingsocket}, spowodowany przez {java.net.ConnectException:Połączenie odrzucone}},{address=localhost:27018, type=UNKNOWN, state=CONNECTING,exception={com.mongodb.MongoSecurityException:Exceptionauthentiating MongoCredential{mechanism=null, userName='username',source='admin', password=, mechanizmProperties={}}}, spowodowane przez {com.mongodb.MongoCommandException:Polecenie nie powiodło się z błędem 18:'Uwierzytelnianie nie powiodło się.' na serwerze localhost:27018. Pełna odpowiedź to { "ok" :0.0, "code" :18, "errmsg" :"Uwierzytelnianie nie powiodło się." }}}]