2017-03-07 40 views
2

我正在使用MongoDB和Java,並有一些關於我的連接的問題和疑問。首先,我應該如何連接到Mongo?我應該使用靜態客戶端並將其打開嗎?因爲連接需要500毫秒。因此,當用戶需要數據時總是連接它並不是最好的想法,是嗎?MongoDB - Java |如何管理連接

但接下來的問題是。當我做一些查詢時,我收到錯誤消息java.lang.IllegalStateException: The pool is closedjava.lang.IllegalStateException: state should be: open

那麼,我該如何管理整個MongoDB連接呢?總是等待500毫秒是方法來減慢和重啓服務器後,像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