Я использую MongoDbFactory для подключения к mongodb с Java. Но служба mongo выдает исключение сокета не реже одного раза в час. Поэтому я вынужден перезапустить службу mongodb для восстановления операций. Я думаю, что это может быть результатом незакрытых связей с mongodb из java, а также MongoDbFactory не предоставляют мне функцию для закрытия соединения. Как я могу убедиться, что все соединения закрыты после определенного сеанса.Слишком много ошибок подключения при использовании mongodb с java
Это код, я использую:
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;
}
}
akaIDIOT спасибо за предложение, позвольте мне попробовать его. – abhips