簡體   English   中英

MongoDB和Java連接錯誤

[英]MongoDB & Java Connection Error

我試圖在與運行mongod的計算機不同的另一台計算機上使用java / mongo驅動程序運行Java程序。 我只修改了java / mongo教程代碼以包含ip地址。

package mongotest;
import com.mongodb.*;

public class Main {
static DBCursor cur;
static DBCollection coll;
public static void main(String[] args) {
    Mongo m;
    try{
        m = new Mongo("192.168.0.102");  // <---- This does not connect.  It will eventually time out
        DB db = m.getDB("playerdb");
        coll = db.getCollection("players");

        cur = coll.find();
        //while (cur.hasNext())
         //  coll.remove(cur.next());

        coll.ensureIndex(new BasicDBObject("playerID", 1).append("unique", true));

        boolean unique = true; 

        cur = coll.find();
        printResults(cur, "Find All Records");


        boolean canCreate;
        canCreate = createAccount("Josh", "1", cur, coll);
        canCreate = createAccount("Jason", "1", cur, coll);
        canCreate = createAccount("Ryan", "1", cur, coll);
        canCreate = createAccount("Michael", "1", cur, coll);
        canCreate = createAccount("John", "1", cur, coll);
        canCreate = createAccount("Susan", "1", cur, coll);


         cur = coll.find();
         printResults(cur, "Find All Records After Insert");



    }//try
    catch(Exception e){
        System.out.println(e);
    }//catch
}

(注意:這最終會超時並退出)

但是,當我在運行數據庫的計算機上運行相同的代碼時,就可以了。

如何在不同網絡上的兩台計算機之間建立連接以進行通信?

不同網絡上的兩台計算機? 因為192.168.0.102確定看起來像是內部地址,而不是外部地址。

您需要找出運行mongodb的計算機的公用IP地址,然后使用它。

您正在執行的操作幾乎與嘗試連接到127.0.0.1類似(但沒有那么糟糕),並且想知道為什么只有在托管該服務的計算機上執行此操作才能起作用。

首先,您需要確保網絡路由:

您可以從計算機a ping計算機b嗎?

您可以從第二台計算機遠程登錄到第一台計算機的mongo端口嗎?

如果不是,則說明您遇到網絡問題,而不是編程問題。 在這種情況下,您可能應該在serverfault或超級用戶上問這個問題

檢查計算機a是否可以ping通計算機b。 如果可以,請檢查mongodb配置參數(例如auth和noauth),並根據您的方便進行設置。

這與MongoDB幾乎沒有關系。 您的網絡連接無法正常工作(防火牆或路由問題),或者您的遠程mongod守護程序未在偵聽相關的外部IP地址(請使用--bind_ip命令行選項確保已將其綁定到正確的IP地址)。

暫無
暫無

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

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