MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment intercepter une exception lors de la création d'une instance MongoClient

Les connexions au serveur sont créées sur des threads démons. Bref, vous ne pourrez pas vérifier les erreurs liées à la connexion lors de la création du client Mongo.

Vous devrez retarder votre vérification de connexion lorsque vous créerez votre première vraie base de données qui implique une lecture ou une écriture.

Juste à des fins de démonstration pour vous faire une idée.

MongoClient mongoClient = new MongoClient("127.0.34.1", 89);
DB db = mongoClient.getDB("test");
try {
   db.addUser("user", new char[] {'p', 'a', 's', 's'});
} catch(Exception e) { MongoTimeoutException exception}

MongoSocketOpenException de Deamon Thread

INFO: Exception in monitor thread while connecting to server 127.0.34.1:89
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:116)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect

MongoTimeoutException du thread principal

Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.34.1:89, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, 
caused by {java.net.ConnectException: Connection refused: connect}}]
at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:375)

Alors enveloppez le code dans le bloc try catch avec MongoTimeoutException et cela fonctionnera bien pour vérifier les erreurs liées à la connexion.