繁体   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