Các kết nối máy chủ được tạo trên các luồng daemon. Vì vậy, câu chuyện ngắn là bạn sẽ không thể kiểm tra các lỗi liên quan đến kết nối trong khi tạo Ứng dụng khách Mongo.
Bạn sẽ phải trì hoãn việc kiểm tra kết nối khi tạo cơ sở dữ liệu thực đầu tiên liên quan đến việc đọc hoặc ghi.
Chỉ nhằm mục đích trình diễn để bạn có ý tưởng.
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 từ chuỗi Deamon
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 từ chuỗi chính
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)
Vì vậy, bọc mã trong khối thử bắt với MongoTimeoutException
và nó sẽ hoạt động ổn để kiểm tra các lỗi liên quan đến kết nối.