簡體   English   中英

(MongoDB Java驅動程序(3.0.0-rc0))UnknownHostException&Authentication

[英](MongoDB Java Driver (3.0.0-rc0)) UnknownHostException & Authentication

最近,我開始使用新的MongoDB Java驅動程序(3.0.0-rc0)。 目前,我有兩個問題。

  • ServerAddress類不再拋出UnknownHostException ,我使用此異常來確定連接是否成功,現在該如何使用?

  • DB類現在變成了MongoDatabase類。 當不贊成使用DB類時,我使用了authenticate(String username,char [] password)進行身份驗證,但是現在我需要使用MongoCredential類,如何檢查身份驗證是否成功?

致謝,朱利安(Julian)vd Berkmortel

3.0 Java驅動程序的位置是

  • DNS中沒有的主機名
  • 無法訪問的主機
  • 不正確的身份驗證憑據

是嚴重的應用程序配置錯誤,通常需要人工干預,因此僅在驅動程序正常使用過程中通過拋出異常而間接地在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}}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM