Cuando yo ejecute el siguiente código simple, por lo general obtener una conexión rechazada error… pero 1 vez de cada 20 se trabajará de forma aleatoria. A continuación, seguir trabajando en repetidas ocasiones durante 2-3 minutos, luego de rechazar las conexiones de nuevo. Puedo detectar un patrón. He mirado en la otra conexión rechazada hilos, pero están usando diferentes tecnologías que pueden o no estar complicando la situación (y por desgracia no todo el hilo está aún resuelto).

Soy completamente nuevo en el Mongo y estoy siguiendo esta guía: http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/ .
Mi objetivo es tener una conexión estable para que yo pueda experimentar/aprender la DB.
Cualquier ayuda con este asunto es muy apreciado! Tenga en cuenta que yo soy completamente nuevo en esto de la tecnología y no saben mi manera alrededor de ella todavía.

Estoy usando el JDK 1.7.0_25 y Eclipse. He añadido mongo-driver-2.11.3.jar para mi proyecto de construcción del camino ya. La siguiente es mi código simple, directamente desde el ejemplo en el sitio que he enumerado.

package database;

import java.util.Set;
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCursor;
import com.mongodb.ServerAddress;

public class MongoPortal {

    /*static final String domain = "localhost";  
    static final int port = 27107;
    static final String database = "test";*/

    public boolean insert(){

        try {
            MongoClient mongoClient = new MongoClient( "localhost" , 27107 );

            DB db = mongoClient.getDB("test");

            //Get and print all the collections
            Set<String> colls = db.getCollectionNames();
            for (String s : colls)
                System.out.println(s);

            mongoClient.close();
        }
        catch (Exception e){
            e.printStackTrace();
            return false;
        }

        return true;
    }
}

Y el error:

Oct 13, 2013 9:12:50 AM com.mongodb.DBTCPConnector initDirectConnection
WARNING: Exception executing isMaster command on localhost/127.0.0.1:27107
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.mongodb.DBPort._open(DBPort.java:223)
at com.mongodb.DBPort.go(DBPort.java:125)
at com.mongodb.DBPort.go(DBPort.java:106)
at com.mongodb.DBPort.findOne(DBPort.java:162)
at com.mongodb.DBPort.runCommand(DBPort.java:170)
at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:547)
at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:526)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:236)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
at com.mongodb.DB.getCollectionNames(DB.java:400)
at database.MongoPortal.insert(MongoPortal.java:29)
at driver.Driver.main(Driver.java:22)
Oct 13, 2013 9:12:50 AM com.mongodb.DBPortPool gotError
WARNING: emptying DBPortPool to localhost/127.0.0.1:27107 b/c of error
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.mongodb.DBPort._open(DBPort.java:223)
at com.mongodb.DBPort.go(DBPort.java:125)
at com.mongodb.DBPort.call(DBPort.java:92)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:244)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
at com.mongodb.DB.getCollectionNames(DB.java:400)
at database.MongoPortal.insert(MongoPortal.java:29)
at driver.Driver.main(Driver.java:22)
com.mongodb.MongoException$Network: Read operation to server localhost/127.0.0.1:27107 failed on database test
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:253)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
at com.mongodb.DB.getCollectionNames(DB.java:400)
at database.MongoPortal.insert(MongoPortal.java:29)
at driver.Driver.main(Driver.java:22)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.mongodb.DBPort._open(DBPort.java:223)
at com.mongodb.DBPort.go(DBPort.java:125)
at com.mongodb.DBPort.call(DBPort.java:92)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:244)
... 6 more

Cuando yo escriba mongo en bash, la pantalla que me sale es:

@debian:~$ mongo
MongoDB shell version: 2.4.6
connecting to: test
> 
  • ¿Has probado a conectar con el mongo shell demasiado? Si sí ¿que tenía el mismo comportamiento?
  • ¿Estás 100% seguro de que el servidor se está ejecutando en segundo plano, mientras que de algún modo es extraño, pero de controlador Java a través de la conexión rechazar en algunos casos cuando no hay ningún servidor que escucha. Marque esta pregunta:stackoverflow.com/questions/5939457/…
  • Me parece que ser capaz de conectar. I tipo de mongo y parecen haber iniciado sesión en el shell. Me puede emitir comandos y navegar alrededor. El siguiente es el inicial shell pantalla, seguido por un campo para introducir el texto: MongoDB versión de shell: 2.4.6 conecta a: prueba de
  • A continuación, el problema es que yo asumo el número de puerto. Mientras que por defecto escucha en el 27017 pero en el código java intenta conectarse en 27107. Así es el número de puerto correcto?
InformationsquelleAutor donsiuch | 2013-10-13

3 Comentarios

  1. 3

    mientras que usted puede conectar con el mongo comando es definitivo que el servidor de mongodb escuchar en el puerto 27017 (aunque sin parámetros que intenta conectar allí). Eso significa que en el código java que tiene que cambiar esta línea:

    MongoClient mongoClient = new MongoClient( "localhost" , 27107 );

    A esta línea:

    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

    Y no estoy seguro de que este comportamiento del conductor que le dan conexión rechazada si no hay ningún servidor escucha en un host:port config es algo que es bueno. Al menos un poco engañoso, desde mi punto de vista.

    • Usted es 100% correcto. Horas de trasteo con Mongo y el problema era un 10 01. El «a veces funciona y a veces no» aparece problemas con copiar y pegar la información. Copia el mal de pasta de la derecha, copie el mal pegue el mal… 🙂 Gracias por tu segundo par de ojos attish!
    • En nuestra profesión problemas que uno realmente sufrimiento para resolver siempre como este. 🙂 no puedo contar cuántas veces hice lo mismo (cientos) . Me alegro de que podría ayudar!
  2. 1

    Tengo el mismo error cuando mongodb fue instalado recientemente en nuestro grupo.
    Código funcionó cuando ejecuto el programa java en el servidor de mongodb se instaló con localhost.

    Para ejecutar el código fuera del clúster , consiguió el error de connection refused.

    El tema era :

    Puerto en el que mongodb se instaló fue limitado a localhost.
    Hemos corregido y se reinicia el servicio y funcionó perfecto !!

  3. 0

    He resuelto este error al dar un –dbpath a mongod y la migración de toda mi DB allí..
    Ahora cada vez que inicie el servidor(mongod), doy –dbpath.
    Antes yo no estaba usando un –dbpath..

Dejar respuesta

Please enter your comment!
Please enter your name here