2012-05-09 18 views
0

今天:在DBConnections重用

我繼續上的應用程序,其中,不斷創建和關閉的(SQL)連接了很多相同的(Oracle)的數據庫,使用運行非常基本相同的憑據工作選擇,更新和插入。

目前,singleton CustomConnectionManager檢查其池中是否有任何CustomConnector可供發佈。一旦被發現,他們可能會被客戶關閉。在close()下面的SQLConnection(由CustomConnector創建和維護)也是封閉的。如果CustomConnector不可用,則會創建新的CustomConnector

關於這個的好處是,最終SQLConnection遺體每次使用後關閉,然而,很少再利用是怎麼回事的價值在於SQLConnectionCustomConnector

由於系統的所有用戶都將連接到相同的數據庫,因此可以使用相同的單個連接來容納所有請求。根據每個請求創建新連接器的原始解決方案似乎非常浪費。

建議:

singleton CustomConnectionManager將保持2個隊列:

  • 可用CustomConnector的隊列,每個都將保持它自己的SQLConnection
  • inUseCustomConnector個隊列。根據要求,新的CustomConnector將被創建並給出。

客戶端交互只發生在singleton CustomConnectionManager

當需要新的連接時,管理員創建它,將其發送給客戶端並將其放置在隊列中inUse。當用戶正在使用的連接,而不是關閉它完成,客戶端將.markConnectorAvailable(),它會把它放回availableConnectors隊列(客戶端將不再能夠控制底層的SQLConnection)

問題1:你怎麼看?這會工作嗎?有沒有現有的解決方案已經做得很好?

問題2:如果建議的方法是不是一個完整的浪費,有什麼好點CustomConnector的關閉它的SQLConnections?

+0

afaik ojdbc包含連接池以重用連接 – JIV

回答

0

這就是連接池。 ADO.Net在設定的時間內沒有使用後會殺死它們(可以在連接字符串中設置,(默認爲兩分鐘,因爲我記得。)。