java数据库连接池proxool介绍及mysql8小时断开连接问题的说明
最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。
目前是和DBCP以及C3P0一起,最为常见的三种JDBC连接池技术。
日前,Hibernate官方宣布由于Bug太多不再支持DBCP,而推荐使用 Proxool或C3P0。
目前最新的版本为0.91版,可从官网下载最新版本http://proxool.sourceforge.net
把proxool.jar和proxool-cglib.jar放入你要配置的项目的lib目录
可以在proxool.xml 中配置,在web.xml中配置初始化servlet,在web容器加载的时候自动加载配置文件,然后applicationContext.xml中进行关联
如果是用的spring框架,在spring-config.xml中配置也可以。
在spring中的配置方法如下: beans 标签下增加:
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="alias" value="proxoolDataSource" />
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="driverUrl" value="jdbc:mysql://127.0.0.1:3306/databasename" />
<property name="user" value="root" />
<property name="password" value="root" />
<property name="maximumConnectionCount" value="40" />
<property name="minimumConnectionCount" value="5" />
</bean>
<property name="alias" value="proxoolDataSource" />
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="driverUrl" value="jdbc:mysql://127.0.0.1:3306/databasename" />
<property name="user" value="root" />
<property name="password" value="root" />
<property name="maximumConnectionCount" value="40" />
<property name="minimumConnectionCount" value="5" />
</bean>
在应用中实时监控连接池的配置web.xml
<servlet>
<servlet-name>adminProxool</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminProxool</servlet-name>
<url-pattern>/admin/proxool</url-pattern>
</servlet-mapping>
访问http://localhost:8080/项目名称/admin/proxool即可看到页面
另外,mysql5.0以后,会出现8小时后自动断开连接的情况。因为我们使用了连接池的技术,这样在web系统初始化的时候,会自动创建很多歌连接放到
连接池中,但是这些连接只有8小时不使用的话会自动回收和做废,这样这个时候使用该连接进行数据库操作的时候,操作将无法执行。
解决方法如下:
在配置文件中增加:
<!-- 自动检查连接是否断掉开关 -->
<test-before-use>true</test-before-use>
<!-- 自动检查连接是否断的测试sql语句 -->
<house-keeping-test-sql>select now();</house-keeping-test-sql>
<test-before-use>true</test-before-use>
<!-- 自动检查连接是否断的测试sql语句 -->
<house-keeping-test-sql>select now();</house-keeping-test-sql>