2012-06-06 2 views
1

У меня есть следующий кодMongo Java, соединяющий недействительный хост/порт, действительно ли он подключается?

public class MongoService { 

    private final Mongo mongo; 
    private static final Logger LOGGER = LoggerFactory.getLogger(MongoService.class); 

    public MongoService() throws UnknownHostException { 
     mongo = new Mongo("localhot", 2707); 
     DB db = mongo.getDB("contract"); 
     LOGGER.info(db.getCollection("Test").getName()); 
    } 

    public Mongo getMongoInstance() { 
     return mongo; 
    } 

    public void insert() { 
     LOGGER.info("will run mongo insert now"); 
    } 

    public void query() { 
     LOGGER.info("will run query now"); 
    } 

    public static void main(String args[]) throws UnknownHostException { 
     MongoService mongoService = new MongoService(); 
     mongoService.insert(); 
     mongoService.query(); 

    } 
} 

Выход

15:26:07.509 [main] INFO c.s.s.business.persist.MongoService - Test 
15:26:07.514 [main] INFO c.s.s.business.persist.MongoService - will run mongo insert now 
15:26:07.514 [main] INFO c.s.s.business.persist.MongoService - will run query now 
  • Хост (должен быть локальный) и порт (должен быть 27017) явно не так, но когда я запускаю эту программу, он работает и не дает никаких исключений

  • Действительно ли это соединение? Я уверен, нет, тогда как справиться с такими ситуациями?

+0

Есть ли у вас правильный уровень протоколирования, установленный для водителя Монго? – ltfishie

+0

Как я могу это сделать? – daydreamer

+0

В вашей конфигурации log4j вы можете добавить что-то вроде . Я был бы удивлен, если вы не получите сообщение об ошибке там. – ltfishie

ответ

1

mongo.getDB ("contract") просто создает объект DB и помещает его в внутренний кеш mongo-java-драйвера.

AFAIK, соединение получается из пула только тогда, когда запрос запроса (т. Е. Операция как find, insert, ...) отправляется в базу данных.

Попытка выполнить операцию findOne и IOException должно произойти:

java.io.IOException: couldn't connect to [/127.0.0.1:2017] bc:java.net.ConnectException: Connection refused 
    at com.mongodb.DBPort._open(DBPort.java:228) 
    at com.mongodb.DBPort.go(DBPort.java:112) 
    at com.mongodb.DBPort.go(DBPort.java:93) 
    at com.mongodb.DBPort.findOne(DBPort.java:146) 
    at com.mongodb.DBPort.runCommand(DBPort.java:157) 
    at com.mongodb.DBTCPConnector.fetchMaxBsonObjectSize(DBTCPConnector.java:457) 
    at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:444) 
    at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:209) 
    at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305) 
    at com.mongodb.DBCollection.findOne(DBCollection.java:647) 
    at com.mongodb.DBCollection.findOne(DBCollection.java:626) 
    at com.mongodb.DBCollection.findOne(DBCollection.java:615) 
+0

это то, что я понимаю, но просто хотел убедиться, что я думаю правильно !, спасибо @Benoit за ответ – daydreamer

+0

Есть ли другой способ найти неудачные/недействительные соединения? –

+0

Вот еще один ответ в SO: http://stackoverflow.com/questions/6832517/how-to-check-from-a-driver-if-mongodb-server-is-running –

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

  • Нет связанных вопросов^_^