2017-05-23 75 views
0

我有一個問題,這些天困惑我。我在Oracle weblogc服務器中爲我的REST API調用使用JDBC連接池。該軟件包已部署並能夠正確處理傳入的請求。在oracle weblogic Server中使用JDBC池,

但不知何故,在創建新請求之後,在數據庫會話級別,我將得到一個新的「INACTIVE」狀態的會話行,即使我故意在代碼中關閉了db連接。在我看來,這屆會議將永遠保持下去。最終它殺死了游泳池。

以下是我的代碼示例,其中「apple」是我的連接池名稱。

Connection connection = JDBCConnection.getJDBCConnction(apple); 
    Statement stmt = null; 
    String query ="select name from user"; 
    String hosts=""; 
    try { 
     stmt = connection.createStatement(); 
     ResultSet rs = stmt.executeQuery(query); 
     while (rs.next()) { 
      name = rs.getString("name"); 
     } 
    } finally { 
     connection.close(); 
    } 

有什麼額外的我需要做的?

感謝,

傑克

+0

正常情況下有非活動會話。當你完成你的連接並關閉它時,它會回到游泳池但未關閉。實際上它是無效的,這就是爲什麼你看到不活動的狀態。然而,關於你的代碼,你應該關閉你的Statement和ResultSet,因爲關閉池中的連接只是將它發送回池。 – Rouliboy

+0

但是,由於它正在積累,那麼我們期望它們被回收? – user3595231

+0

你的意思是說你創建了比池大小更多的會話嗎? – Rouliboy

回答

0

你很可能遇到了你在哪裏關閉Connection一個問題,但它不會導致關閉ResultSetStatement

該主題在SO上被廣泛地解釋爲herehere