DBCP是Apache的一个开源项目:
commons.dbcp.jar
http://jakarta.apache.org/commons/dbcp/index.html
DBCP依赖Apache的另外2个开源项目
commons.collections.jar和commons.pool.jar
下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。
以下是我的连接池
java 代码
- package selfservice;
-
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
-
- import org.apache.commons.dbcp.ConnectionFactory;
- import org.apache.commons.dbcp.DriverManagerConnectionFactory;
- import org.apache.commons.dbcp.PoolableConnectionFactory;
- import org.apache.commons.dbcp.PoolingDriver;
- import org.apache.commons.pool.ObjectPool;
- import org.apache.commons.pool.impl.GenericObjectPool;
-
-
- public class PoolManager {
- private static String
- driver="oracle.jdbc.driver.OracleDriver",
- url = "jdbc:oracle:thin:@192.168.0.40:1521:drcom",
- Name="drcom",
- Password="drcom";
-
- private static Class driverClass = null;
- private static ObjectPool connectionPool = null;
-
- public PoolManager(){
- }
-
-
-
-
-
- private static void loadProperties(){
- try {
- java.io.InputStream stream = new java.io.FileInputStream("config.properties");
- java.util.Properties props = new java.util.Properties();
- props.load(stream);
-
- driver = props.getProperty("ORACLE_DRIVER");
- url = props.getProperty("ORACLE_URL");
- Name = props.getProperty("ORACLE_LOGIN_NAME");
- Password = props.getProperty("ORACLE_LOGIN_PASSWORD");
-
- } catch (FileNotFoundException e) {
- System.out.println("读取配置文件异常");
- } catch(IOException ie){
- System.out.println("读取配置文件时IO异常");
- }
- }
-
-
-
-
- private static synchronized void initDataSource() {
- if (driverClass == null) {
- try {
- driverClass = Class.forName(driver);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
-
-
-
-
-
- public static void StartPool() {
- loadProperties();
- initDataSource();
- if (connectionPool != null) {
- ShutdownPool();
- }
- try {
- connectionPool = new GenericObjectPool(null);
- ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, Name, Password);
- PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true);
- Class.forName("org.apache.commons.dbcp.PoolingDriver");
- PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
- driver.registerPool("dbpool", connectionPool);
- System.out.println("装配连接池OK");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
-
-
- public static void ShutdownPool() {
- try {
- PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:");
- driver.closePool("dbpool");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
-
- public static Connection getConnection() {
- Connection conn = null;
- if(connectionPool == null)
- StartPool();
- try {
- conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:dbpool");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
-
-
-
-
-
-
-
- public static Connection getConnection(String name){
- return getConnection();
- }
-
-
-
-
-
- public static void freeConnection(Connection conn){
- if(conn != null){
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
-
-
-
-
-
-
- public static void freeConnection (String name,Connection con){
- freeConnection(con);
- }
-
-
-
-
-
-
- public static void main(String[] args) {
- try {
- Connection conn = PoolManager.getConnection();
- if(conn != null){
- Statement statement = conn.createStatement();
- ResultSet rs = statement.executeQuery("select * from tblgxinterface");
- int c = rs.getMetaData().getColumnCount();
- while(rs.next()){
- System.out.println();
- for(int i=1;i<=c;i++){
- System.out.print(rs.getObject(i));
- }
- }
- rs.close();
- }
- PoolManager.freeConnection(conn);
- } catch (SQLException e) {
- e.printStackTrace();
- }
-
- }
-
- }
以上创建一个连接池,并从连接池中得到连接,连接池会管理每个连接,以上测试通过。