我正在寻找一些正确的方式来设置我的web应用程序与Java运行mongoDB的建议。 从mongoDB教程中,我明白我应该只有Mongo类的一个实例。在Java Web应用程序中的MongoDB配置
Mongo类被设计成线程安全的并且在线程间共享。通常,您只为给定的数据库集群创建1个实例,并在整个应用程序中使用它。
所以我有这个单身提供商(我使用的注射吉斯)
@Singleton
public class MongoProvider implements Provider<Mongo> {
private Mongo mongo;
public Mongo get() {
if (mongo == null)
mongo = new Mongo("localhost", 27017);
return mongo;
}
}
每当我有我的web应用程序蒙戈工作我注入了供应商,并获得mongo的同一个实例。
public class MyService {
private Provider<Mongo> mongoProvider;
@Inject
private MyService(Provider<Mongo> mongoProvider) {
this.mongoProvider = mongoProvider;
}
public void execute() {
DB db = mongoProvider.get().getDB("mydatabase");
DBCollection coll = db.getCollection("mycollection");
// Do stuff in collection
...
}
}
我感到奇怪的是,每次访问我的数据库,我得到的日志这样从蒙戈:
[initandlisten]连接从192.168.1.33:54297#15
接受[initandlisten]连接从192.168.1.33:54299#接受16
到目前为止,我没有任何问题,但我想知道如果这是很好的做法,如果当接受的连接数量过高时,我不会遇到任何问题。
- 我的整个应用程序还应该只有一个DB对象实例吗?
- 我是否必须以不同的方式配置MongoDB以在一段时间后自动关闭连接?或者我必须手动关闭连接?我已阅读了关于在Mongo上使用close()方法的一些信息,但我不确定何时或是否要调用它。
谢谢你的建议。
好的,谢谢你的回答。 – jonasr