2017-03-07 21 views
2

私はJavaでMongoDBを使用していますが、接続に関するいくつかの問題や質問があります。まず第一に、私はMongoにどのように接続すればよいですか?私は静的なクライアントを使用し、それを開いたままにする必要がありますか?接続には500msかかるのでしたがって、ユーザーがデータを必要とするときに常に接続するのが最良のアイデアではありませんか?MongoDB - Java |接続の管理方法

しかし、次の問題は次のとおりです。私がいくつかの質問をすると、エラーメッセージjava.lang.IllegalStateException: The pool is closedまたはjava.lang.IllegalStateException: state should be: openが表示されます。

MongoDB接続の全体をどのように管理すればよいですか?いつも500msを待つことは、10台の接続のようにサーバーを遅くして再起動することです。他の良い方法はありますか?

ありがとうございました!

+0

あなたはあなたのシングルトン/静的 'MongoClient'で' close'を呼び出していますか?単一の 'MongoClient'を複数のスレッドで共有することは安全です。' MongoClient'は実際にあなたの接続プールです。ただし、誰かがこのプールを閉じると、この例外が発生します。 – Andreas

答えて

2

どのようにしてMongoに接続すればよいですか?

あなたはすでに、MongoClientを使用しています。これは良い方法です。

MongoClientクラスはスレッドセーフでスレッド間で共有されるように設計されています。通常、特定のデータベースクラスタに対してインスタンスを1つだけ作成し、アプリケーション全体で使用します。

静的クライアントを使用し、開いたままにする必要がありますか?

MongoClientインスタンスは実際にはデータベースへの接続のプールを表します。 MongoClientクラスのインスタンスは、複数のスレッドでも必要になります。

Do I need to explicitly close connection?

No, you don't.と同様にその

はあなたが取得しているエラーを解決する必要があります。

ここにはMongoClientを使用して接続する際のQuick Tourがあります。

関連する問題