我有一个spring应用程序,其主页触发多个ajax调用,然后从DB获取数据并返回.数据库已配置连接池,minPoolSize为50,maxPoolSize为100.
现在,当我打开主页时,与DB建立了大约7个连接,预计大约有7个ajax调用,我假设它们都创建了自己的连接.现在,当我刷新页面时,我看到另外7个新连接建立(我看到来自db2监控的总共14个物理连接),这似乎是意外的,因为我假设jdbcTemplate在第一次访问和刷新查询后关闭连接在这种情况下应该重用连接?
现在的问题是,结果集是否也被jdbcTemplate关闭以及连接关闭?或者我是否需要显式关闭resultSet以便可以自动关闭连接.打开的resultSet可能是连接没有关闭的原因?附加连接池配置的代码
我的初步理论是,只有达到minPoolSize才会重复使用连接,直到那时它总会创建新的物理连接.我甚至在达到这个限制后也看到了这种行为.我刷新了我的页面10次,我看到70个物理连接.现在我唯一的疑问是,连接在某种程度上没有接近,春天看到这些连接忙吗?这可能是因为结果集未关闭或其他原因?这是一种说jdbctemplate不等待结束时间超过时间限制的方法吗?
谢谢Manoj
如果查看org.springframework.jdbc.core.JdbcTemplate.query方法源代码,您会看到调用 -
JdbcUtils.closeResultSet(rs);
在finally块中 - 所以是的,JDBCTemplate会调用rs.close
模板还会关闭或返回到池的连接