Mongo Java在无效主机/端口上连接,是否真的连接?
我有以下代码Mongo Java在无效主机/端口上连接,是否真的连接?,java,mongodb,mongo-java,Java,Mongodb,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", 27
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
- 主机(应该是localhost)和端口(应该是27017)显然是错误的,但是当我运行这个程序时,它运行并且没有给出任何异常
- 真的有联系吗??我肯定没有,那么如何处理这种情况呢
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)
getDB(“contract”)只是创建一个DB对象并将其放入MongoJava驱动程序内部缓存中
另外,只有当请求(如查找、插入等操作)发送到数据库时,才能从池中获得连接
尝试执行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)
您是否为Mongo驱动程序设置了正确的日志记录级别?在您的log4j配置中,您可以添加如下内容。如果你没有收到一些错误信息,我会很惊讶。你实际上没有尝试访问数据库,对吗?只需将消息打印到日志?getDB()正在尝试访问上述代码中的数据库我尝试了您的确切代码,并获得了预期的异常。您正在运行什么版本?您确定没有名为“localhot”的服务器吗?:)您是否为Mongo驱动程序设置了正确的日志记录级别?在您的log4j配置中,您可以添加如下内容。如果你没有收到一些错误信息,我会很惊讶。你实际上没有尝试访问数据库,对吗?只需将消息打印到日志?getDB()正在尝试访问上述代码中的数据库我尝试了您的确切代码,并获得了预期的异常。您正在运行什么版本?您确定没有名为“localhot”的服务器吗?:)这就是我的理解,但我只是想确保我的想法是正确的!,谢谢@Benoit的回答有没有其他方法可以找到失败/无效的连接?这里是SO中的另一个答案:这就是我的理解,但只是想确保我的想法正确!,感谢@Benoit的回答是否有其他方法可以查找失败/无效连接?以下是SO中的另一个答案: