我正在使用google guice框架实现web服务,这里我注入mongodb模块,构造函数初始化mongodb连接。对于我使用MongoClient并执行其他操作的每个方法,然后在获得结果后关闭连接。问题是如果有大量繁重的计算连接被关闭并且给出错误则无法引导连接错误。请找到实现mongodb连接的方法,该连接将保持活动或重新开始通信...
try{
MongoDBModule module = new MongoDBModule();
MongoClient mongoClient = module.getMongoDBClient();
MongoDatabase database = mongoClient.getDatabase(m_client.getDatabaseName());
MongoCollection collection = database.getCollection("CAMPUS_PROD");
//do stuff with mongoclient
mongoClient.close();
return document.resuls
}catch(IOException ie){
// print exception
}
答案 0 :(得分:1)
与所有MongoDB驱动程序一样,您不应该为每个请求创建和关闭MongoClient。相反,您希望在应用程序启动时找到创建MongoClient的方法,然后在应用程序退出时关闭它。
在你的情况下,我会让你的Guice Binder创建MongoClient,然后进行绑定(...)。toInstance(...)。例如,
bind(MongoClient.class).toInstance(mongoClient);
在使用MongoClient的类中,你应该不调用close()。
当第一个请求触发MongoClient发现MongoDB群集并且我们无法创建与任何服务器的连接时,会导致“无法引导”错误。这很容易是由打开和关闭MongoClient导致的连接抖动造成的。