在hibernate
中
已经不再支持dbcp了
hibernate的作者在中
明确指出在实践中发现dbcp有BUG
在某些种情会产生很多空连接不能释放
所以抛弃了对dbcp的支持
至于c
p
有评论说它的算法不是最优的
c
p
占用资源比较大
效率也不高
proxool不少行家推荐使用
而且暂时来说
是负面评价是最少的一个
以连接MySQl为例介绍三种连接配置方法
<! JDBC驱动程序 >
<property name=connectiondriver_class>orggjtmmmysqlDriver
</property>
<property name=connectionurl>jdbc:mysql://localhost:/struts?useUnicode=true&characterEncoding=GBK
</property>
<property name=connectionusername>root</property><! 数据库用户名 >
<property name=connectionpassword></property> <! 数据库密码 >
上面的一段配置在cp和dbcp中都是必需的因为hibernate会根据上述的配置来生成connections再交给cp或dbcp管理但是proxool则不能
CP
只需在hibernatecfgxml中加入
<property name=cpmin_size></property>
<property name=cpmax_size></property>
<property name=cptime_out></property>
<property name=cpmax_statement></property>
还有在classespath中加入cpjar
dbcp
在hibernatecfgxml中加入
<property name=dbcpmaxActive></property>
<property name=dbcpwhenExhaustedAction></property>
<property name=dbcpmaxWait></property>
<property name=dbcpmaxIdle></property>
<property name=dbcppsmaxActive></property>
<property name=dbcppswhenExhaustedAction></property>
<property name=dbcppsmaxWait></property>
<property name=dbcppsmaxIdle></property>
还有在classespath中加入commonspooljar 和commonsdbcpjar
proxool
在hibernatecfgxml中加入
<property name=proxoolpool_alias>pool</property>
<property name=proxoolxml>ProxoolConfxml</property>
<property name=connectionprovider_class>nnectionProxoolConnectionProvider</property>
然后在和hibernatecfgxml同一个目录下加一个ProxoolConfxml文件内容为
<?xml version= encoding=utf?>
<! the proxool configuration can be embedded within your own applicationsAnything outside the proxool tag is ignored >
<somethingelseentirely>
<proxool>
<alias>pool</alias>
<!proxool只能管理由自己产生的连接>
<driverurl>jdbc:mysql://localhost:/struts?useUnicode=true&characterEncoding=GBK</driverurl>
<driverclass>orggjtmmmysqlDriver</driverclass>
<driverproperties>
<property name=user value=root/>
<property name=password value=/>
</driverproperties>
<! proxool自动侦察各个连接状态的时间间隔(毫秒)侦察到空闲的连接就马上回收超时的销毁>
<housekeepingsleeptime></housekeepingsleeptime>
<! 指因未有空闲连接可以分配而在队列中等候的最大请求数超过这个请求数的用户连接就不会被接受>
<maximumnewconnections></maximumnewconnections>
<! 最少保持的空闲连接数>
<prototypecount></prototypecount>
<! 允许最大连接数超过了这个连接再有请求时就排在队列中等候最大的等待请求数由maximumnewconnections决定>
<maximumconnectioncount></maximumconnectioncount>
<! 最小连接数>
<minimumconnectioncount></minimumconnectioncount>
</proxool>
</somethingelseentirely>
并在classespath中加入proxooljar
如果用的是hibernate在myeclipse中导入hibernate包时同时导入advanced support 类库则里面已经有好几个连接池可以用了如cpproxool等只要稍微配置下就可以配置下日志(logjproperties)你就可以详细的看到连接池运行的过程了