# java JDBC c3p0 使用 ###### tags: `Java` `JDBC` `c3p0` 需要 1. c3p0-0.9.2.1.jar 2. mchange-commons-java-0.2.3.4.jar 3. mysql-connector-java-5.1.28-bin.jar ## ConnectionPool ``` package com.mysql.c3p0.DButil; import java.beans.PropertyVetoException; import java.sql.Connection; import java.sql.SQLException; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import com.mchange.v2.c3p0.ComboPooledDataSource; // c3p0 連接池 @Component(service = ConnectionPool.class, immediate = true) public class ConnectionPool { private ComboPooledDataSource ds; private static ConnectionPool pool; // 如果還沒有連接池,就實例一個連接池,有就回傳現有的連接池 public final ConnectionPool getInstance() { if (pool == null) { try { pool = new ConnectionPool(); } catch (Exception e) { e.printStackTrace(); } } return pool; } // 啟動後就先創立一個連接池 @Activate public void start() { System.out.println("connectionPool created"); pool = getInstance(); } // 結束後關閉連接池 @Deactivate public void stop() { System.out.println("connectionPool closed"); pool.manualstop(); } // 建構子,連接資料庫 public ConnectionPool() { ds = new ComboPooledDataSource(); ds.setUser("user"); ds.setPassword("password"); ds.setJdbcUrl("jdbc:mysql://taog-mysql:3306/db?useUnicode=true&characterEncoding=utf-8"); try { ds.setDriverClass("org.mariadb.jdbc.Driver"); } catch (PropertyVetoException e) { e.printStackTrace(); System.out.println("setDriverClass 失败!"); return; } ds.setInitialPoolSize(5); // 连接池初始化时创建的连接数 ds.setMinPoolSize(5); // 连接池保持的最小连接数 ds.setMaxPoolSize(50); // 连接池中拥有的最大连接数 ds.setAcquireIncrement(5); // 连接池在无空闲连接可用时一次性创建的新数据库连接数 ds.setMaxStatementsPerConnection(30); // 连接池为数据源单个Connection缓存的PreparedStatement数 ds.setMaxIdleTime(600); // 连接的最大空闲时间 ds.setIdleConnectionTestPeriod(900); // 每900秒检查所有连接池中的空闲连接 ds.setAcquireRetryAttempts(5); // 连接池在获得新连接失败时重试的次数 ds.setAcquireRetryDelay(1000); // 两次连接中间隔时间,单位毫秒 } public void manualstop() { ds.close(); } // 從連接池裡面獲取connection public synchronized final Connection getConnection() { try { return ds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return null; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up