从Eclipse运行的程序能够将数据插入本地Mongo DB,但无法插入远程Mongo DB。

3

这是我使用的代码:

package testing;
import com.mongodb.*;

public class MongoTest {

public static void main(String args[])
{
    try
    {
        MongoClient cli=new MongoClient("10.6.9.227",27017);
        DB dtbs=cli.getDB("test");
        System.out.println("Connection to DB successful");
        DBCollection col=dtbs.getCollection("newcol");
        BasicDBObject record=new    BasicDBObject("name","student1").append("sem","6");
        col.insert(record);
        System.out.println("Successfully Inserted into collection");
    }
    catch(Exception e)
    { 
        System.out.println(e.getMessage()); 
    }
}}

这段代码可以在运行Eclipse程序的同一台计算机中完美插入(初始化cli对象时指定10.6.9.57),但是当我尝试在同一局域网内的远程计算机上进行相同操作时(使用IP 10.6.9.227),在Eclipse控制台中显示以下内容:

连接数据库成功,等待10,000ms超时,没有找到匹配AnyServerSelector{}的服务器。集群状态为:{type=Unknown, servers=[{address=10.6.9.227:28017, type=Unknown, state=Connecting, exception={java.lang.NullPointerException}}]

10.6.9.57所在的计算机运行Windows操作系统,我从这里运行我的Eclipse程序。远程计算机10.6.9.227运行Debian Squeeze操作系统。

我通过系统227中的netstat命令检查所需端口是否已打开:

 :~$ sudo netstat -lntup
    >Active Internet connections (only servers)
    >Proto Recv-Q Send-Q Local Address           Foreign Address         State                                                                                                  PID/Program name
    >tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN                                                                                                 848/portmap
   >tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN                                                                                              2421/mongod
   >tcp        0      0 0.0.0.0:49396           0.0.0.0:*               LISTEN                                                                                              860/rpc.statd
   >tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN                                                                                              1566/sshd
   >tcp        0      0 127.0.0.1:5984          0.0.0.0:*               LISTEN                                                                                              1163/beam.smp
   >tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN                                                                                              2421/mongod
   >tcp6       0      0 :::22                   :::*                    LISTEN                                                                                              1566/sshd
   >udp        0      0 0.0.0.0:54866           0.0.0.0:*                                                                                                                   860/rpc.statd
   >udp        0      0 0.0.0.0:612             0.0.0.0:*                                                                                                                   860/rpc.statd
   >udp        0      0 0.0.0.0:32870           0.0.0.0:*                                                                                                                   1260/avahi-daemon:
   >udp        0      0 0.0.0.0:5353            0.0.0.0:*                                                                                                                   1260/avahi-daemon:
   >udp        0      0 0.0.0.0:111             0.0.0.0:*                                                                                                                   848/portmap
   >udp        0      0 10.6.9.227:123          0.0.0.0:*                                                                                                                   1610/ntpd
   >udp        0      0 127.0.0.1:123           0.0.0.0:*                                                                                                                   1610/ntpd
   >udp        0      0 0.0.0.0:123             0.0.0.0:*                                                                                                                   1610/ntpd
   >udp6       0      0 :::5353                 :::*                                                                                                                        1260/avahi-daemon:
   >udp6       0      0 :::123                  :::*                                                                                                                        1610/ntpd
   >udp6       0      0 :::50061                :::*                                                                                                                          1260/avahi-daemon:

这些端口仅开放,并且我还能从本地命令行(通过putty)插入到该机器:

> db.newcol.insert({name:"firststudent"},{sem:"5"});
> db.newcol.find()
{ "_id" : ObjectId("5571366e1031fc034ac63013"), "name" : "firststudent" }

此外,这是位于 /var/log/mongodb 的 Mongo DB 日志文件的样子:
Fri Jun  5 10:39:02 Mongo DB : starting : pid = 2421 port = 27017 dbpath = /var/lib/mongodb master = 0 slave = 0  64-bit
Fri Jun  5 10:39:02 db version v1.4.4, pdfile version 4.5
Fri Jun  5 10:39:02 git version: nogitversion
Fri Jun  5 10:39:02 sys info: Linux bobek-a0 2.6.32-trunk-amd64 #1 SMP Sun Jan 10 22:40:40 UTC 2010 x86_64 BOOST_LIB_VERSION=1_42
Fri Jun  5 10:39:02 waiting for connections on port 27017
Fri Jun  5 10:39:02 web admin interface listening on port 28017

我无法确定为什么从连接到同一局域网的机器上的 Eclipse 运行的 Java 程序无法执行它。我已经包含了 mongo-java-driver-2.13.0-rc1.jar。我甚至尝试停止和重新启动远程机器上的 MongoDB 并重复此过程多次。但仍然无法插入。有任何帮助吗?
1个回答

0
  • 从您的计算机使用telnet命令连接到远程Mongo数据库的27017端口,看看是否能够连接成功。
  • 使用本地Mongo客户端(非Java / Eclipse)连接到远程Mongo数据库,看看是否能够成功连接。请注意,此连接不是从本地主机到远程主机,而是从您的计算机通过Mongo客户端到远程主机。
  • 检查远程主机上的Mongo配置(特别是检查/etc/mongod.conf文件和bind_ip设置的值)。

我实际上尝试卸载旧版本并安装了一个更新的MongoDB版本。现在它可以工作了。感谢您的帮助 :) - SANJANA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接