1.jar包
c3p0
mysql-connector-java
2.c3p0的配置
src/c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- 默认配置,如果没有指定则使用这个配置 -->
<default-config>
<property name="user">root</property>
<property name="password">a1020151695</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/first?serverTimezone=Hongkong</property>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">3</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">2</property>
<property name="maxStatements">200</property>
</default-config>
<named-config name="gogo">
<property name="user">root</property>
<property name="password">a1020151695</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/first?serverTimezone=Hongkong</property>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<!-- 如果池中数据连接不够时一次增长多少个 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">20</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">25</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
</named-config>
</c3p0-config>
Ps:
default-config 标签内是c3p0的默认配置
然后还可以自己另外定义一个配置
named-config name=“gogo”
4.servlet
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
//context 空指针
cpds = new ComboPooledDataSource("gogo");
//读取名为gogo的config,如果这里缺省的话,则读取默认的default-conifg
Connection connection=cpds.getConnection();
//从连接池获取到连接
connection.close();
}
Ps:c3p0获取连接过后是需要close的
不然,获取多个连接后就会报错
java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
这里的close不是直接断开连接,而是将连接归还给连接池