我使用MongoDbFactory与Java连接到mongodb.但是mongo服务每小时至少抛出一次套接字异常.因此我被迫重启mongodb服务以恢复操作.我认为这可能是由于与java的mongodb的未关闭连接的结果,并且MongoDbFactory也没有为我提...
![](https://oss.womengda.net/imgfile/2310/1ER05P31OP-23438.jpg)
我使用MongoDbFactory与Java连接到mongodb.但是mongo服务每小时至少抛出一次套接字异常.因此我被迫重启mongodb服务以恢复操作.我认为这可能是由于与java的mongodb的未关闭连接的结果,并且MongoDbFactory也没有为我提供关闭连接的功能.如何确保在特定会话后关闭所有连接.
这是我正在使用的代码:
package com.####.mongo.configuration;
import com.mongodb.Mongo;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
@Configuration
public class SpringMongoFeedConfig {
public @Bean
MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new Mongo(), "feedDatabase");
}
public @Bean
MongoTemplate mongoTemplate() throws Exception {
MappingMongoConverter converter = new MappingMongoConverter(mongoDbFactory(), new MongoMappingContext());
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);
return mongoTemplate;
}
}
和:
private String insertFeedsToMongo(FeedMongoDTO feedObject, FeedType type) throws UnknownHostException {
try {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoFeedConfig.class);
MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
switch (type) {
case FOLLOW:
mongoOperation.save(feedObject, "feedsByUid");
break;
case GENERAL:
mongoOperation.save(feedObject, "allFeeds");
break;
default:
break;
}
return feedObject.getId();
} catch (Exception ex) {
log.info("insertFeedsToMongo() : mongo Exception - ", ex);
return null;
}
}
解决方法:
我也遇到了Mongo对象的问题.确保在完成特定连接时调用myMongo.close()解决它.
我建议将你的工厂函数中使用新Mongo()创建的实例存储在某个允许以后关闭的地方(SimpleMongoDbFactory可能就是那个地方).刚才注意到这是一个春天的事情.建议仍然存在:跟踪您的Mongo实例.
沃梦达教程
本文标题为:使用mongodb和java时连接错误太多
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
猜你喜欢
- Go&java算法之最大数示例详解 2023-04-16
- Flowable 设置任务处理人的四种方式详解 2023-06-10
- Mybatis表的关联查询详情 2023-05-24
- 解析HikariCP一百行代码轻松掌握多线程 2023-06-02
- Spring Boot使用线程池处理上万条数据插入功能 2023-04-07
- VSCode中开发JavaWeb项目的详细过程(Maven+Tomcat+热部署) 2023-06-06
- mybatis中mapper-locations的作用 2022-12-07
- 教你如何在 javadoc 输出<> 符号 2023-07-14
- java – MySQL查询中的LIMIT如何使取消流成为可能 2023-11-01
- JDK下载与安装超详细步骤大全 2023-04-07