我有一個spring應用程序,其主頁觸發多個ajax調用,然後從數據庫中獲取數據並返回。該數據庫已配置連接池,minPoolSize爲50,maxPoolSize爲100.做jdbcTemplate關閉結果集?
現在,當我打開主頁時,與DB建立了約7個連接,預計在7個附近建立ajax調用,而我假設都創建自己的連接。現在,當我刷新頁面時,我看到7個更多的新連接已建立(我看到來自db2監視的總共14個物理連接),這似乎是意外的,因爲我認爲jdbcTemplate會在第一次訪問和刷新的查詢後關閉連接在這種情況下應該重用連接?
現在的問題是結果集也被jdbcTemplate和連接關閉了嗎?或者我需要顯式關閉結果集,以便連接可以自動關閉。打開的結果集可能是連接不緊密的原因?附加的代碼和連接池的配置
<dataSource jdbcDriverRef="db2-driver" jndiName="jdbc/dashDB-Development" transactional="true" type="javax.sql.DataSource">
<properties.db2.jcc databaseName="BLUDB" id="db2-dashDB-Development-props" password="********" portNumber="*****" serverName="*********" sslConnection="false" user="*****"/>
<connectionManager id="db2-DashDB-Development-conMgr" maxPoolSize="100" minPoolSize="50" numConnectionsPerThreadLocal="2"/>
我最初的理論是,連接的重用會發生達到了MinPoolSize只有當和到那時它總是創建新的物理連接。 HOwever我甚至在達到這個限制之後看到了這種行爲。我刷新了我的頁面10次,並看到70個物理連接。現在我唯一的疑問是,連接在某種程度上沒有接近,春天看到這些連接很忙?這可能是因爲結果集沒有關閉或其他原因?這是一種說jdbctemplate不超過時間限制等待關閉結果集的方式嗎?
感謝 馬諾
連接池將與JDBCTemplate分開管理 - 你可以在你的connectionManager配置中看到這個。此外,該模板可能會調用關閉 - 但底層連接管理員可能會將連接打開以供其他池用戶使用 – farrellmr
我同意並理解這一點..但是此時我看到連接沒有得到重用,這意味着它不會重新連接池嗎?如果這是真的,這意味着jdbcTemplate沒有調用close?如果它回到池中,刷新應該從池中重用它們,而不是connectionManager要求新的連接。 –
您不能控制池的操作 - 因此它可以根據您的配置參數決定如何最好地分配池策略 – farrellmr