我在java中使用连接池。只是想确保我正确使用它。
所以,这是我的mongoconnection类,带有getDatabase方法。
public class MongoConnection {
private static MongoConnection mongoConnection = null;
public static MongoConnection getInstance() {
if (mongoConnection == null) {
mongoConnection = new MongoConnection();
}
return mongoConnection;
}
private MongoClient mongoClient = null;
private MongoDatabase mongoDatabase = null;
private MongoConnection() {
mongoClient = new MongoClient("localhost");
mongoDatabase = mongoClient.getDatabase("test");
}
public MongoDatabase getDatabase() {
return mongoDatabase;
}
}
以下是使用该代码段的代码段。
public void insertCustomer(document){
MongoCollection<Document> collection =
MongoConnection.getInstance().getDatabase().getCollection("customers");
collection.insertOne(document);
}
inserCustomer方法被多次调用。
这就是全部。
答案 0 :(得分:1)
根据MongoDB Java驱动程序文档,Mongo对象可以神奇地处理数据库连接池。
你应该使用一个Mongo对象(正如你所做的那样),所以它会为你做池。但是,如果使用多个对象,则需要显式调用.close()。
所以在你的情况下创建一个对象并重新使用它,该对象维护与Mongo服务器的一个连接。
您可以创建一个Mongo Java实例,它将维护一个内部连接池(默认大小为10),并且它是隐藏的,您不必担心它。如需更多信息,请查看.. http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency
实际上我现在正在生产中运行它并且没有任何问题。
自:http://www.mongodb.org/display/DOCS/Java+Tutorial
Mongo类被设计为线程安全并在线程之间共享。通常,您只为给定的数据库集群创建一个实例,并在整个应用程序中使用它。如果由于某种原因你决定创建许多mongo inances,请注意:所有资源使用限制(最大连接数等)都适用于每个mongo实例来处理实例,请确保调用mongo.close()来清理资源