2016-01-18 2 views
0

Я пытаюсь подключиться к MongoDB сервера, который работает на удаленной машине Linux с использованием Java-кода,MongoDB проблема подключения

public static void main(String[] args) { 
    Properties prop = new Properties(); 
    try {   
     //load a properties file 
     prop.load(new FileInputStream("src/main/resources/mongodb.properties"));    
     String server = prop.getProperty("server"); 
     String port = prop.getProperty("port"); 
     int portnum = Integer.parseInt(port); 

     /**** Connect to MongoDB ****/ 
     MongoClient mongo = new MongoClient(server,portnum); 
     System.out.println("Connected to database"); 

     /**** Get database ****/ 
     // if database doesn't exists, MongoDB will create it for you 
     DB db = mongo.getDB("test"); 

     /**** Get collection/table from 'details' ****/ 
     // if collection doesn't exists, MongoDB will create it for you 
     DBCollection table = db.getCollection("details"); 

     /**** Insert ****/ 
     // create a document to store key and value 
     BasicDBObject document = new BasicDBObject(); 
     document.put("name", "test"); 
     document.put("age", 24); 
     table.insert(document); 

     /**** Find and display ****/ 
     BasicDBObject searchQuery = new BasicDBObject(); 
     searchQuery.put("name", "test"); 

     DBCursor cursor = table.find(searchQuery); 

     while (cursor.hasNext()) { 
      System.out.println(cursor.next()); 
     } 


    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

Он работает отлично с моим местным Монго. Но перед проблемой возникает проблема с подключением к серверу Linux.

Вот сообщение об ошибке,

Jan 18, 2016 12:23:02 AM com.mongodb.DBTCPConnector initDirectConnection 
WARNING: Exception executing isMaster command on server:port 
java.io.IOException: couldn't connect to [server port] bc:java.net.ConnectException: Connection refused: connect 
    at com.mongodb.DBPort._open(DBPort.java:214) 
    at com.mongodb.DBPort.go(DBPort.java:107) 
    at com.mongodb.DBPort.go(DBPort.java:88) 
    at com.mongodb.DBPort.findOne(DBPort.java:143) 
    at com.mongodb.DBPort.runCommand(DBPort.java:148) 
    at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:548) 
    at com.mongodb.Mongo.getMaxBsonObjectSize(Mongo.java:620) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:254) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226) 
    at com.mongodb.DBCollection.insert(DBCollection.java:75) 
    at com.mongodb.DBCollection.insert(DBCollection.java:59) 
    at com.mongodb.DBCollection.insert(DBCollection.java:104) 
    at com.filecompare.util.MongoDBConnection.main(MongoDBConnection.java:42) 

Jan 18, 2016 12:23:03 AM com.mongodb.DBTCPConnector initDirectConnection 
WARNING: Exception executing isMaster command on sever port 
java.io.IOException: couldn't connect to [server port] bc:java.net.ConnectException: Connection refused: connect 
    at com.mongodb.DBPort._open(DBPort.java:214) 
    at com.mongodb.DBPort.go(DBPort.java:107) 
    at com.mongodb.DBPort.go(DBPort.java:88) 
    at com.mongodb.DBPort.findOne(DBPort.java:143) 
    at com.mongodb.DBPort.runCommand(DBPort.java:148) 
    at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:548) 
    at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:527) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:174) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:270) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226) 
    at com.mongodb.DBCollection.insert(DBCollection.java:75) 
    at com.mongodb.DBCollection.insert(DBCollection.java:59) 
    at com.mongodb.DBCollection.insert(DBCollection.java:104) 
    at com.filecompare.util.MongoDBConnection.main(MongoDBConnection.java:42) 

Jan 18, 2016 12:23:04 AM com.mongodb.DBPortPool gotError 
WARNING: emptying DBPortPool to server:port b/c of error 
java.io.IOException: couldn't connect to [server:port] bc:java.net.ConnectException: Connection refused: connect 
    at com.mongodb.DBPort._open(DBPort.java:214) 
    at com.mongodb.DBPort.go(DBPort.java:107) 
    at com.mongodb.DBPort.go(DBPort.java:84) 
    at com.mongodb.DBPort.say(DBPort.java:79) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:181) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:270) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226) 
    at com.mongodb.DBCollection.insert(DBCollection.java:75) 
    at com.mongodb.DBCollection.insert(DBCollection.java:59) 
    at com.mongodb.DBCollection.insert(DBCollection.java:104) 
    at com.filecompare.util.MongoDBConnection.main(MongoDBConnection.java:42) 

Exception in thread "main" com.mongodb.MongoException$Network: can't say something 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:194) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:270) 
    at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226) 
    at com.mongodb.DBCollection.insert(DBCollection.java:75) 
    at com.mongodb.DBCollection.insert(DBCollection.java:59) 
    at com.mongodb.DBCollection.insert(DBCollection.java:104) 
    at com.filecompare.util.MongoDBConnection.main(MongoDBConnection.java:42) 
Caused by: java.io.IOException: couldn't connect to [server port] bc:java.net.ConnectException: Connection refused: connect 
    at com.mongodb.DBPort._open(DBPort.java:214) 
    at com.mongodb.DBPort.go(DBPort.java:107) 
    at com.mongodb.DBPort.go(DBPort.java:84) 
    at com.mongodb.DBPort.say(DBPort.java:79) 
    at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:181) 
    ... 7 more 

Шаги, которые я обычно следуют, чтобы соединиться с Монго на Линукса,

  1. Войти на сервер с помощью PuTTY (Windows) или команду SSH (Mac).
  2. type in mongo.
  3. Подключено к mongo, запустите команды mongo для просмотра/вставки данных.

Но в приведенном выше java-коде я не указывал никаких учетных данных. Должен ли я это делать. Если да, то кто-нибудь может мне помочь.

ответ

1

Вы уверены, что задаете правильные значения для своих переменных server и port в mongodb.properties?

Порт по умолчанию для MongoDB - 27017.

Кроме того, проверьте свой mongod.conf на сервере MongoDB. Этот файл находится по умолчанию в /etc/mongod.conf и найдите следующий атрибут:

bind_ip = 127.0.0.1 

Если установлено значение 127.0.0.1 или localhost, то вы не сможете получить доступ к серверу MongoDB публично снаружи.

Теперь, чтобы исправить это, значение изменения в bind_ip включить свой публичный адрес IP, так что если ваш публичный адрес 46.12.212.34, bind_ip будет выглядеть следующим образом:

bind_ip = 127.0.0.1, 46.12.212.34 

Сохранить и закройте файл и перезапустить базу данных MongoDB , Теперь ваше приложение Java должно работать.

+0

Данные сервера и порта, которые я использую, являются правильными. Мне нужно будет проверить bind_ip в файле mongod.conf. Но я не смог найти файл mongod.conf как на моем локальном сервере mongodb, так и на linux-машине. –

+0

Это в '/ usr/local/etc/mongod.conf'? Как вы установили MongoDB? –

+0

Я запустил файл mongodb-win32-x86_64-2008plus-ssl-3.2.1-signed.msi после его загрузки. В моей локальной машине Windows нет файла mongod.conf. –

Смежные вопросы