tomcat5一般都用DBCP的连接池,但是DBCP有bug,访问量大以后就经常报错,而且速度变慢。所以改用C3P0连接池,先从http://sourceforge.net/projects/c3p0/下载最新的C3P0连接池,将lib下的两个jar文件,连同数据库的JDBC驱动一起复制到tomcat/common/lib文件夹下。
C3P0的文档中说明配置tomcat5要修改server.xml文件,但是怎么修改都不能正常工作。
后发现在conf\Catalina\localhost文件夹下有一个和程序名一样的xml文件,把以下代码加入到这个文件的
<Context></Context>中,
<Resource name="jdbc/pooledDS" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource" /> <ResourceParams name="jdbc/pooledDS"> <parameter> <name>factory</name> <value>org.apache.naming.factory.BeanFactory</value> </parameter> <parameter> <name>driverClass</name> <value>org.postgresql.Driver</value> </parameter> <parameter> <name>jdbcUrl</name> <value>jdbc:postgresql://localhost/c3p0-test</value> </parameter> <parameter> <name>user</name> <value>swaldman</value> </parameter> <parameter> <name>password</name> <value>test</value> </parameter> <parameter> <name>minPoolSize</name> <value>5</value> </parameter> <parameter> <name>maxPoolSize</name> <value>15</value> </parameter> <parameter> <name>acquireIncrement</name> <value>5</value> </parameter> </ResourceParams>
同样的,要在web.xml中加入
<resource-ref> <res-ref-name>jdbc/pooledDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
程序中的调用和其他连接池是一样的:
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/pooledDS");
转自:
http://blog.youkuaiyun.com/lveyo/archive/2006/09/01/1153425.aspx