3

mongo サーバーとの通信に mongo-java2.4jar を使用しています。私のwebappでは、mongo=new Mongo("serverIp","port")必要な場所で使用しており、処理が完了したら、を使用してmongo接続を閉じていmongo.close()ます。

しかし、しばらくすると、次の例外が発生します。

java.net.SocketException: 開いているファイルが多すぎます

接続を閉じると、ソケットが閉じられないと思います。この問題を理解するのを手伝ってください。

ありがとう!

4

1 に答える 1

3

Mongo クラスは接続プールを透過的に実行するため、通常、JVM プロセスごとにインスタンスを 1 つだけ持つ必要があります。http://api.mongodb.org/java/2.5-pre-/com/mongodb/Mongo.htmlをご覧ください。

このクラスのインスタンスを頻繁に作成すると、解放する前にあまりにも多くの接続を取得することになると思います。アプリケーション全体のアプリ起動時にシングルトンを作成し、アプリケーション コンテキストに配置するだけです。アプリが停止した場合にのみ close を呼び出します。

乾杯、

スヴェン

于 2011-02-18T17:11:56.513 に答える