アプリケーションごとに必要なMongoClientのインスタンスは1つだけなので、便宜上、このメソッドを使用してHttpServletを拡張しました。
DB getDB(String dbName) throws Exception {
MongoClient m = (MongoClient)getServletContext().getAttribute("mongo");
if(m == null) {
m = new MongoClient();
getServletContext().setAttribute("mongo",m);
}
return m.getDB(dbName);
}
このコードを実行すると、問題なく動作し、接続して必要な作業を実行しますが、この特定のサーブレットを実行するたびに、mongodbへの新しい接続が継続的に開かれるようです。
1月26日土曜日21:31:42[initandlisten]接続が127.0.0.1:46860#1から受け入れられました(1つの接続が現在開いています) 1月26日土曜日21:31:53[initandlisten]接続が127.0.0.1:46861#2から受け入れられました(2つの接続が現在開いています) 1月26日土曜日21:32:00[initandlisten]接続が127.0.0.1:46863#3から受け入れられました(3つの接続が現在開いています)
このページで私はこれを行っています:
DB db = getDB("foo");
col = db.getCollection("bar");
次に、単純なクエリを実行します。なぜ私がこれほど多くの新しい接続を取得しているのか誰かが説明できますか?また、私はこのMongo.Holderクラスを見ました。これは私がしていることを行うための好ましい方法ですか?
ありがとう!