spring下連線池比較

2021-08-25 00:11:20 字數 1791 閱讀 6761

最近遇到了乙個奇怪的問題,使用了apache的連線池,當資料庫重啟之後,就無法連線到資料庫上了,開始以為是程式的問題,看了一些**,無用。後經同事提示,在連線池的配置中加了一項:

validationquery

select 1

就ok了,才明白這個是用來檢查連線的,當訪問量不大時,連線池中的連線足夠用,它不會去申請新的連線,但原有的連線已經被重置了,也就是reset了,無法使用,因此對於使用連線池,應該加上面的配置,以檢查資料庫連線。

同樣,使用spring來配置連線池的時候也應該加上:

select 1

防止資料庫重新啟動後出現問題。

spring下的各種連線池的比較

hibernate 開發組推薦c3p0,spring開發組推薦dbcp,但是dbcp連線池有weblogic連線池同樣的問題,就是強行關閉連線或資料庫重啟後,無法 reconnect ,告訴連線被重置,這個設定可以解決。hibernate in action推薦c3p0和proxool。

我推薦proxool,因為他不但可以監控後台。還可以有效的釋放連線。在connection close時,也就是歸還connection,

關閉所有的statement,並且判斷是否autocommit,如果不行,就rollback,並且設定true,

可以參考proxool的org.logicalcobwebs.proxool.connectionresetter類

connection pool把connection reset置回initial state。

dbcp的配置

select 1

true

c3p0的配置, 注意是''driverclass' , 'jdbcurl', 'user' , 'password'

net.sourceforge.jtds.jdbc.driver

jdbc:jtds:sqlserver://localhost:1433/hua

sahua155

25或$$

5100

100010$

$xapool的配置

com.mysql.jdbc.driver

jdbc:mysql://localhost/dbname

root

mypass15

select 1

c-jdbc的配置

jdbc:cjdbc:

weblogic的連線池解決辦法:test reserved connections: 如果選擇了這個選項,伺服器會在把連線提供給客戶端之前

對其進行測試。 test created connections: 如果選擇了這個選項,就會在建立乙個jdbc

連線之後和在把它新增到jdbc連線池中的可用連線列表之前,對該jdbc連線進行測試。

tomcat的jndi關於dbcp的配置:

factory

org.apache.commons.dbcp.basicdatasourcefactory

driverclassname

com.sybase.jdbc2.jdbc.sybdriver

urlxyz

username

xyzpassword

xyzmaxactive

5maxidle

5maxwait

-1removeabandoned

true

validationquery

select count(*) from sometable where 1 = 0

testonborrow

true

spring下連線池比較

最近遇到了乙個奇怪的問題,使用了apache的連線池,當資料庫重啟之後,就無法連線到資料庫上了,開始以為是程式的問題,看了一些 無用。後經同事提示,在連線池的配置中加了一項 validationquery select 1 就ok了,才明白這個是用來檢查連線的,當訪問量不大時,連線池中的連線足夠用,...

spring下連線池比較

validationquery select 1 就ok了,才明白這個是用來檢查連線的,當訪問量不大時,連線池中的連線足夠用,它不會去申請新的連線,但原有的連線已經被重置了,也就是reset了,無法使用,因此對於使用連線池,應該加上面的配置,以檢查資料庫連線。同樣,使用spring來配置連線池的時候...

spring下連線池比較

最近遇到了乙個奇怪的問題,使用了apache的連線池,當資料庫重啟之後,就無法連線到資料庫上了,開始以為是程式的問題,看了一些 無用。後經同事提示,在連線池的配置中加了一項 validationquery select 1 就ok了,才明白這個是用來檢查連線的,當訪問量不大時,連線池中的連線足夠用,...