簡體   English   中英

連接外部mongo數據庫(java)

[英]Connect to external mongo database (java)

我正在嘗試連接到我通過mongolab創建的mongo數據庫

我在mongolab的數據庫頁面上提到了標准的uri: 在此輸入圖像描述

我試試這段代碼:

String uriString = "mongodb://user:password@ds047037.mongolab.com:47037/db_test_01";
MongoURI uri = new MongoURI(uriString);
try {
    DB db = uri.connectDB();
    db.authenticate(uri.getUsername(), uri.getPassword());
    Set<String> colls = db.getCollectionNames();
    for (String s : colls) {
        System.out.println(s);
    }
    System.out.println("done");
    } catch (UnknownHostException e) {
        System.out.println("UnknownHostException: " + e);
    } catch(MongoException me) {
        System.out.println("MongoException: " + me);
    }

但是,我得到UnknownHostException: java.net.UnknownHostException: ds047037.mongolab.com

有關UnknownHostException文檔說:“拋出表示無法確定主機的IP地址。”

怎么了?

在堆棧中的某個點看起來像DNS解析問題。 java.net.UnknownHostException為“拋出,表示無法確定主機的IP地址”。

Java問題

問題可能出在Java本身。 Java和IPv6存在已知問題 您可以嘗試將java.net.preferIPv4Stack系統屬性設置為true以查看是否可以解決問題。

作為啟動JVM時java命令的參數:

java -Djava.net.preferIPv4Stack=true YourMainClass

或以編程方式:

System.setProperty("java.net.preferIPv4Stack" , "true");

您還可以嘗試升級到最新版本的Java以獲取隨附的所有錯誤修復。

您的DNS服務器或配置有問題

問題還可能出在筆記本電腦/機器上的DNS配置中。 您可以使用dig來查看DNS查找返回的內容。 以下是我從筆記本電腦中獲得的輸出。 您也可以使用此網頁版本的dig來查看您應該獲得的內容。

% dig ds047037.mongolab.com

; <<>> DiG 9.8.3-P1 <<>> ds047037.mongolab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20375
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ds047037.mongolab.com.     IN  A

;; ANSWER SECTION:
ds047037.mongolab.com.  120 IN  CNAME   ds047037-a.mongolab.com.
ds047037-a.mongolab.com. 120    IN  CNAME   h000432.mongolab.com.
h000432.mongolab.com.   120 IN  CNAME   ec2-46-51-159-130.eu-west-1.compute.amazonaws.com.
ec2-46-51-159-130.eu-west-1.compute.amazonaws.com. 300 IN A 46.51.159.130

;; Query time: 23 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jan 12 13:22:24 2013
;; MSG SIZE  rcvd: 162

如果您確認DNS配置/服務器是問題,則需要確定您正在使用的DNS服務器 ,然后聯系所有者/管理員或聯系您的ISP以確保它們按照應有的順序進行配置。

嘗試使用主機端口 ,所以:

Mongo mongo = new Mongo("ds047037.mongolab.com", 47037);
DB db = mongo.getDB("db_test_01");
db.authenticate(user, password); 

暫無
暫無

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

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