【问题标题】:Mongo Database Connectivity from Java来自 Java 的 Mongo 数据库连接
【发布时间】:2016-10-23 03:24:40
【问题描述】:

只是玩弄虚拟服务器,试图提高我的技能。

所以我正在尝试连接到本地托管的 mongoDB 并遇到一些问题。想要遍历一个集合并获得一些输出,所以我知道我已经连接了某种东西。问题是我看不到将集合(我想我有)转换为 java 理解的简单方法。我正在使用 3.4 java 驱动程序运行 mongo3.2。如果这很重要,我也在运行 Ubuntu 16.04。 还没有复制和粘贴到我的虚拟机工作,所以我将附上几张显示数据库状态的图片。 这是我的 java 应用程序代码

static String user = "guest";
static String database = "VsJogger";
static char[] password = {'g','u','e','s','t'};
public static void main(String[] args) {
    MongoCredential credential = MongoCredential.createCredential(user,
                                                                  database,
                                                                  password);

    MongoClientURI uri = new MongoClientURI("mongodb://"+user+":"
            +String.valueOf(password)
            +"@localhost/?authSource="+database);

   try{

     // To connect to mongodb server
     MongoClient mongoClient = new MongoClient( uri);


     // Now connect to your databases
     MongoDatabase db = mongoClient.getDatabase("VsJogger");
     System.out.println("Connect to database successfully");
     MongoCollection coll = db.getCollection("Jog");
     MongoCursor<Document> cursor = coll.find().iterator();

     int i = 1;
     while (cursor.hasNext()) { 
        System.out.println("Inserted Document: "+i); 
        System.out.println(cursor.next()); 
        i++;
     }


  }catch(Exception e){
     System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  }

然后输出。

Oct 23, 2016 3:59:45 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Connect to database successfully
Oct 23, 2016 3:59:45 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
Oct 23, 2016 3:59:46 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57)
    at com.mongodb.connection.SocketStream.open(SocketStream.java:58)
    ... 3 more

com.mongodb.MongoTimeoutException: 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=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused: connect}}]
BUILD SUCCESSFUL (total time: 31 seconds)

【问题讨论】:

    标签: java mongodb virtual-machine database


    【解决方案1】:

    可能应该更清楚。我正在使用在 windows(虚拟机)上运行的 Ubuntu 虚拟机来托管服务器并尝试从 windows 访问它。

    通过更改 mongo 配置文件以包含虚拟机的 192.xx.. 地址并在通过 java 连接时使用该地址进行修复。环回地址'localhost'对于机器来说是唯一的,即。我的虚拟机,因此我的主系统无法访问。

    【讨论】:

      猜你喜欢
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多