我正在尝试使用 mongoDB。我在 JSF 应用程序范围的 bean(使用 CDI)中创建。
@Named("appMongo")
@ApplicationScoped
public class MongoApplicationScope implements Serializable{
private static final long serialVersionUID = 1L;
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 DB getDb() {
return db;
}
public DBCollection getCollectionInDatabase(String collection) {
DBCollection coll;
coll = db.getCollection(collection);
return coll;
}
public MongoClient getMongoClient() {
return mongoClient;
}
}
然后我创建使用 prevoius bean 的请求范围 bean。
@Named("mongoBean")
@RequestScoped
public class MongoBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject MongoApplicationScope mongoAccess;
public void pringNumber() {
System.out.println(mongoAccess.getCollectionInDatabase("mydb").getCount());
}
}
在 xhtml 页面上,我有带有 actionListener 的 commandButton,它调用“printNumber”方法。结果是每个连接到 jboss 服务器并单击按钮打开与 mongo 的新连接的用户。我不想要那种情况。我想实现我只有 1 个连接 bettwen 服务器和数据库的情况,并且每个用户都重用该连接。