2017-05-23 58 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