我使用的是mongodb-java-driver,除此之外没有别的。我创建了连接到Mongo的singleten EJB。MonoDb创建集合上的每一个操作的连接
@Singleton
public class MongoConnection {
private DB db = null;
private MongoClient mongoClient = null;
@PostConstruct
public void init() {
try {
mongoClient = new MongoClient("localhost", 27017);
db = mongoClient.getDB("mydb");
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public MongoConnection() {
}
public DB getDb() {
return db;
}
public DBCollection getCollectionInDatabase(String collection) {
DBCollection coll;
coll = db.getCollection(collection);
return coll;
}
}
我得到这个EJB在ApplicationScoped豆(JSF)(只是要确定,我将只有一个数据库连接的情况下)。
@Named("appMongo")
@ApplicationScoped
public class MongoApplicationScope implements Serializable{
private static final long serialVersionUID = 1L;
@EJB MongoConnection mu;
public MongoConnection getMu() {
return mu;
}
public void setMu(MongoConnection mu) {
this.mu = mu;
}
}
然后在要求范围的bean我从获取数据DB
@Named("mongoBean")
@SessionScoped
public class MongoBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject MongoApplicationScope mongoAccess;
public void mongoDzialanie() {
DBCollection coll = mongoAccess.getMu().getDb().getCollection("oko"); //at this step everything is correct
System.out.println(coll.getCount()); //new connection is created text from mongoDB console -> connection accepted from 127.0.0.1:57700 #2 (2 connections now open)
}
为什么即使我有同样的“DB”的对象实例,而无需创建新的连接,为什么我不能,我不能获取数据分享这个连接,因为它应该是由于共享? }
我看到与Node.Js MongoDb驱动程序相同的行为。你有没有发现为什么会发生这种情况? –
我刚刚通过解决类似问题找到了您的问题的答案。 –