http://community.csdn.net/Expert/topic/3352/3352743.xml?temp=.2557642上面有介绍,自己看看

解决方案 »

  1.   

    那要看你的应用程序 负载大不大要是不大 其实连接池很好写的!(估计不好用但是完全可以)
    package com.west100;import java.io.*;
    import java.sql.*;
    import java.util.Date;
    import java.util.*;public class ConnManager {
    //private static String Driver = "数据库驱动";
    private static String Url = "你的url";
    private static String Login = "数据库用户名";
    private static String Pass = "密码";
    //private Connection conn;
    //private Statement stmt;
    //private PreparedStatement pstmt;
    private int minConn = 1;
    private int maxConn = 20;
    PrintWriter loger=null;
    String logFile ="F:/project/movie/WebModule/log/log.txt";static int connAmount = 0; //现有的连接个数
    static Stack stack = new Stack();
    Vector vector = new Vector();private static ConnManager instance;public static synchronized ConnManager getInstance()
    {
    if(instance == null)
    {
    instance = new ConnManager();
    }
    else
    {
    System.out.println(instance);
    }
    return instance;
    }
    private ConnManager()
    {
    try
    {
    loger = new PrintWriter(new FileWriter(logFile, true), true);
    }
    catch(IOException e)
    {
    System.err.println("无法打开日志文件"+logFile);
    loger = new PrintWriter(System.err);
    }
    try
    {
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    for(int i=0; i<minConn; i++)
    {
    Connection conn = newConnection();
    if(conn != null)
    {
    stack.push(newConnection());
    }
    }}
    catch(Exception e)
    {
    System.out.println("ConnectionManager: driver not loaded");
    //conn = null;
    }
    }private void log(String msg)
    {
    loger.println(new Date() + ":" + msg);
    }
    public synchronized void freeConnection(Connection con)
    {
    stack.push(con);
    notifyAll();
    log("归还一个连接到连接池!");
    }
    public synchronized Connection getConnection()
    {
    Connection conn = null;
    // System.out.println(" ======================="+stack.size());if(stack.size() > 0)
    {
    System.out.println("从连接池取出一个连接");
    System.out.println("现在可用的连接总数1. 为:" + stack.size());
    conn = (Connection) stack.pop();
    System.out.println("现在可用的连接总数2. 为:" + stack.size());}
    if(stack.size() < maxConn)
    {
    conn = newConnection();
    }
    else if(stack.size() >= maxConn)
    {
    try
    {
    System.out.println("等待连接");
    wait(100000);
    return getConnection();
    }
    catch(InterruptedException e)
    {
    System.out.println("发生异常" + e.getMessage());
    }
    }
    return conn;
    }private synchronized Connection newConnection()
    {
    Connection conn = null;
    try
    {
    if(stack.size() < maxConn)
    {
    conn = DriverManager.getConnection(Url, Login, Pass);
    connAmount++;
    if(conn != null)
    {
    System.out.println("创建一个连接成功:" + connAmount + " " + conn);
    System.out.println("连接池创建一个连接 !");
    }
    return conn;
    }
    else
    {
    try
    {
    log("等待 连接中 :");
    wait(10000);
    return newConnection();
    }
    catch(InterruptedException e)
    {
    log("等待 超时 !");
    return null;
    }
    }
    }
    catch(SQLException e)
    {
    log("无法创建连接: " + Url);
    return null;
    }//return conn;
    }
    }
      

  2.   

    连接oracle数据库的连接池:
    <ResourceParams name="jdbc/OracleDB">   <parameter>     <name>factory</name>     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>   </parameter>   <parameter>     <name>driverClassName</name>     <value>oracle.jdbc.driver.OracleDriver</value>   </parameter>   <parameter>     <name>url</name>     <value>jdbc:oracle:thin:@172.16.136.245:1521:sxszf</value>   </parameter>   <parameter>     <name>username</name>     <value>zgsx</value>   </parameter>   <parameter>     <name>password</name>     <value>zgsx</value>   </parameter>   <parameter>     <name>maxActive</name>     <value>20</value>   </parameter>   <parameter>     <name>maxIdle</name>     <value>10</value>   </parameter>   <parameter>     <name>maxWait</name>     <value>-1</value>   </parameter> </ResourceParams> 
      

  3.   

    连接Sql Server的连接池:
    <ResourceParams name="jdbc/MsqlDB">   <parameter>     <name>factory</name>     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>   </parameter>   <parameter>     <name>driverClassName</name>     <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>   </parameter>   <parameter>     <name>url</name>     <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test</value>   </parameter>   <parameter>     <name>username</name>     <value>test</value>   </parameter>   <parameter>     <name>password</name>     <value>test</value>   </parameter>   <parameter>     <name>maxActive</name>     <value>20</value>   </parameter>   <parameter>     <name>maxIdle</name>     <value>10</value>   </parameter>   <parameter>     <name>maxWait</name>     <value>-1</value>   </parameter> </ResourceParams>