|
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"); |
|