﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-czmchen-随笔分类-J2EE Studying</title><link>http://www.blogjava.net/czmchen/category/40144.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 10 Nov 2009 21:04:40 GMT</lastBuildDate><pubDate>Tue, 10 Nov 2009 21:04:40 GMT</pubDate><ttl>60</ttl><item><title>浅谈proxool连接池经验</title><link>http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html</link><dc:creator>陈周敏</dc:creator><author>陈周敏</author><pubDate>Tue, 10 Nov 2009 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html</guid><wfw:comment>http://www.blogjava.net/czmchen/comments/301843.html</wfw:comment><comments>http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/czmchen/comments/commentRss/301843.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/czmchen/services/trackbacks/301843.html</trackback:ping><description><![CDATA[连接池是负责分配、管理和释放数据库连接，它允许应用程序重复使用一个现有的数据库连接，而再不是重新建立一个；释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能<br />
<br />
<br />
所以一个项目访问数据库比较频繁的时候，就要用到连接池，一般连接池本人都觉得proxool比较好（这个网上的都是这样说，呵呵），我以前一直都用C3P0连接池，发觉速度还不错，不过不大稳定！<br />
不说那么多，浅谈下我的proxool的经验<br />
<br />
准备前的工作：<br />
到proxool官网http://proxool.sourceforge.net/上下载JAR包和文档<br />
然后解压，把里面的proxool-0.9.1.jar和proxool-cglib.jar放到你的服务器的lib下面（好像我用的是TOMCAT，就放到TOMCAT的lib里面，供TOMCAT调用）<br />
<br />
先在WEB-INF下建立以个proxool.xml的文件<br />
详细的配置以下：<br />
<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!--<br />
&nbsp;&nbsp;&nbsp; Document&nbsp;&nbsp; : proxool.xml<br />
&nbsp;&nbsp;&nbsp; Created on : 2009年11月9日, 下午3:15<br />
&nbsp;&nbsp;&nbsp; Author&nbsp;&nbsp;&nbsp;&nbsp; : Administrator<br />
&nbsp;&nbsp;&nbsp; Description:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Purpose of the document follows.<br />
--&gt;<br />
&lt;something-else-entirely&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;proxool&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;alias&gt;mypool&lt;/alias&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-url&gt;jdbc:mysql://localhost/czm?characterEncoding=utf-8&lt;/driver-url&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;driver-properties&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user" value="root"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password" value=""/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/driver-properties&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-sleep-time&gt;300000&lt;/house-keeping-sleep-time&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--最大的等待请求数,即因没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;proxool.simultaneous-build-throttle&gt;200&lt;/proxool.simultaneous-build-throttle&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- maximum-new-connections&gt;50&lt;/maximum-new-connections--&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最少保持的空闲连接数--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prototype-count&gt;5&lt;/prototype-count&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-count&gt;100&lt;/maximum-connection-count&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- 最小连接数--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;minimum-connection-count&gt;25&lt;/minimum-connection-count&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-active-time&gt;300000&lt;/maximum-active-time&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;maximum-connection-lifetime&gt;3600000&lt;/maximum-connection-lifetime&gt;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;house-keeping-test-sql&gt;select CURRENT_DATE&lt;/house-keeping-test-sql&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/proxool&gt;<br />
&lt;/something-else-entirely&gt;<br />
<br />
<br />
<br />
接着在web.xml下做个插件<br />
详细配置以下：<br />
<br />
&lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;ServletConfigurator&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.configuration.ServletConfigurator&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-name&gt;xmlFile&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param-value&gt;WEB-INF/proxool.xml&lt;/param-value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/proxool&lt;/url-pattern&gt;&lt;!--这个设置是你的项目的上下文路径--&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;<br />
<br />
web.xml配置完后，剩下的就是写个测试连接类<br />
新建一个jsp页面，页面内容以下：<br />
<br />
&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;<br />
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />
"http://www.w3.org/TR/html4/loose.dtd"&gt;<br />
<br />
&lt;html&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;head&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;JSP Page&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/head&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;body&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.sql.Connection conn = java.sql.DriverManager.getConnection("proxool.myself");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("conn:" + conn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("conn:" + conn);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
<br />
OK.运行该页面看看是否成功？<br />
以前我就是在类中测试，发觉它连接不上，报<br />
java.sql.SQLException: No suitable driver found for proxool.myself<br />
的错误。<br />
所以一定要用JSP或servlet来测试，因为它调用到服务器<br />
<br />
<br />
<img src ="http://www.blogjava.net/czmchen/aggbug/301843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/czmchen/" target="_blank">陈周敏</a> 2009-11-10 15:47 <a href="http://www.blogjava.net/czmchen/archive/2009/11/10/301843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>