proxool是一个强大的connection pooling项目, 兼容于 jdk 1.3 以及 1.4。也已经实现了监控, 纪录等等的功能, 对于一个有限制connection数量, 及注重performation的项目来说, 是一套非常完整的解决方案。
下载地址:http://sourceforge.net/projects/proxool/
首先, 你要把下载proxool 的 lib下面所有的jar文件, 放到WEB-INF/lib下面, 另外, 把你的jdbc driver也放到相同的lib。
1、新建WEB-INF/proxool.xml配置连接池属性,(proxool支持多配置方式如property,javabean等)
public Connection getConenctionFromProxool() { Connection conn = null ; try { Class.forName( "org.logicalcobwebs.proxool.ProxoolDriver " ); conn = DriverManager.getConnection( " proxool.mysql " ); if (conn == null ) { log.info( " 获取连接失败 " ); } else { log.info( " 获得连接成功 " ); } } catch (Exception e) { log.error(e.toString()); } return conn; }
<?xml version="1.0" encoding="UTF-8"?> <!--the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ignored.--> <something-else-entirely> <proxool> <alias>mysql</alias> <driver-url>jdbc:mysql://127.0.0.1:3306/test</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root"/> <property name="password" value="root"/> </driver-properties> <!--自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 --> <house-keeping-sleep-time>6000</house-keeping-sleep-time> <!--最少保持的空闲连接数 --> <prototype-count>5</prototype-count> <!--允许最大连接数,超过了这个连接,再有请求时,就排在队列中 --> <maximum-connection-count>100</maximum-connection-count> </proxool> </something-else-entirely>
2、在web.xml中配置读取proxool.xml,这个相当于程序中使用
JAXPConfigurator.configure("proxool.xml",false)
在web.xml文件中添加以下内容:
<servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class> <init-param> <param-name>xmlFile</param-name> <param-value>WEB-INF/proxool.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
3、获取连接参考org.logicalcobwebs.proxool.examples.Simple类。
下载的包中有相应的文档说明。可以参考以下代码
4、下面是监控方法:
web.xml中配置Admin servlet,Admin servlet的作用是监控连接池的运行状况。
<servlet> <servlet-name>Admin</servlet-name> <servlet-class> org.logicalcobwebs.proxool.admin.servlet.AdminServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>Admin</servlet-name> <url-pattern>/Admin </url-pattern> </servlet-mapping>
用http://localhots/web-name/Admin访问得到监控结果。