最近我开始使用新的MongoDB Java驱动程序(3.0.0-rc0)。目前我有两个问题。
ServerAddress 类不再抛出 UnknownHostException ,我使用此异常来确定连接是否成功,我应该为此使用什么现在?
DB 类现在成为 MongoDatabase 类。当 DB 类没有被弃用时,我使用 authenticate(String username,char [] password)进行身份验证,但现在我需要使用 MongoCredential < / em> class,如何检查身份验证是否成功?
关于, Julian v.d Berkmortel
答案 0 :(得分:0)
3.0 Java驱动程序采用
的位置是严重的应用程序配置错误,通常需要人工干预,因此只能通过在正常使用驱动程序过程中抛出的异常间接地在API中浮出。
因此,在这两种情况下,驱动程序最终都会从需要连接到MongoDB服务器的任何方法抛出MongoTimeoutException。该异常将包含一条消息,指示连接失败的根本原因。例如,以下程序:
MongoClient mongoClient = new MongoClient(new ServerAddress("unknown-host-name"),
MongoClientOptions.builder()
.serverSelectionTimeout(5000)
.build());
mongoClient.getDatabase("admin").runCommand(new Document("ping", 1));
将抛出此消息的异常:
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=unknown-host-name:27017, type=UNKNOWN, state=CONNECTING,
exception={com.mongodb.MongoSocketException: unknown-host-name},
caused by {java.net.UnknownHostException: unknown-host-name}}]