2011-03-29 120 views
4

我已經在websphere服務器上託管了一個數據源,並且希望通過我的應用程序客戶端使用該數據源。從JNDI連接池中檢索數據庫連接設置

從JNDI數據源中檢索數據庫連接後,我將連接的提交設置更改爲false。之後,我將利用這些連接,並在任務完成後關閉連接。

我的疑問是,如果我忘記在關閉之前更改連接的提交設置(我的意思是將連接返回到池),會發生什麼情況。如果任何其他客戶端訪問此數據源並且他/她獲得相同的連接,則提交設置仍然存在,或者服務器將重置這些連接的設置。

問候, 陽光明媚。

回答

3

正常情況下,池中的連接會使用特定於AS的實現進行包裝,這會影響客戶端過於侵入。當在連接上調用特定的方法時,它被認爲是「髒的」,並且可能不會返回到池中,而是關閉並重新創建,或者重置爲原始狀態。通常有關於如何處理這些情況的設置,例如在Weblogic中刪除受感染的連接

這些自我清潔的效果也取決於驅動程序。因此我建議你用1連接池做一個簡單的測試。將連接設置爲autocommit = false,不要關閉它,退出並嘗試從另一個客戶端使用它進行測試,檢查autocommit屬性的實際狀態。

要考慮的另一件事是該AS包裝中的Connection.close()不會關閉連接,而是將其放入池中。因此,如果客戶在調用close()之前斷開連接(並且在此之前設置自動提交),則該連接可能不適用於其他池客戶端,從而導致連接泄漏。