不能建立连接,缓冲池溢出,说明连接池已经耗尽了,它提示是说连接池的连接已经全部占满了,要及时释放连接的资源,可能是你的代码中没有正确的释放Connection对象,又或者是并发数目大于你限制的最大值,一般开发人员都有过遇到这个问题的经历,所以,你仔细检查你的代码,特别跟数据库有关的部分,跟踪一下看看什么时候在TOMCAT下打出这个信息的.应该不是什么大的问题,祝你好运.

解决方案 »

  1.   

    跟你的JDK和数据库一般没有直接关系.下边是我连接SQL SERVER连接池的代码,看对你是否有帮助.
    /*
     * <p>タイトル: JHシステム</p>
     * <p>会社名: ISEC</p>
     * <p>著作権: Copyright (c) 2005</p>
     * <p>Created on 2005/06/29</p>
     * @version 1.0
     * @author FanGang
     */
    package jp.co.isec.jh.common.database;
    import java.sql.*;import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;/**
     * Connectionコントロール
     */
    public class ConnectionControl { /** データソース */
    private DataSource ds = null ; /** Connectionオブジェクト */
    private Connection conn = null; /** Connectionハンドル保持フラグ(保持している場合:true) */
    private boolean Share = false; /**
     * デフォルトコンストラクタ
     * Connectionインスタンスを取得する。
     * @throws SQLException SQLエラーが発生した
     */
    public ConnectionControl() throws SQLException {
    //System.out.println("ConnectionControl Start");
    try {

    InitialContext ic = new InitialContext();
    ds = (DataSource)ic.lookup("java:comp/env/jdbc/JHMentDB");

    } catch(NamingException e) { System.out.println("ConnectionControl Driver Error");
    throw new SQLException("Driver Error");

    }

    conn = ds.getConnection();

    // AutoCommitを無効
    conn.setAutoCommit(false);
    //System.out.println("ConnectionControl END");
    } /**
     * コンストラクタ
     * Connectionインスタンスを保持する。
     * @param  conn Connectionインスタンス
     */
    public ConnectionControl(Connection conn) {

    //System.out.println("ConnectionControl Start");
    this.conn = conn;
    this.Share = true;
    //System.out.println("ConnectionControl END");
    } /**
     * コミット処理
     * 保持しているConnectionインスタンスがNULLの場合は何もしない。
     * @throws SQLException SQLエラーが発生した場合
     */
    public void commit() throws SQLException {

    //System.out.println("commit Start");
    if( this.conn == null ) { return; }
    this.conn.commit();
    //System.out.println("commit END");
    } /**
     * ロールバック処理。
     * 保持しているConnectionインスタンスがNULLの場合は何もしない。
     * @throws SQLException SQLエラーが発生した場合
     */
    public void rollback() throws SQLException {

    //System.out.println("rollback Start");
    if( this.conn == null ) { return; }
    this.conn.rollback();
    //System.out.println("rollback END");
    } /**
     * 保持しているConnectionハンドルを返します。
     * @return Connectionインスタンス
     */
    public Connection getConnection() {

    //System.out.println("getConnection");
    return this.conn;
    } /**
     * データベース接続の切断を行います、
     * 保持しているConnectionインスタンスが内部で取得したものなら解放して、
     * そうでない場合は何も行わない。
     * @throws SQLException SQLエラーが発生した場合
     */
    public void releaseConnection() throws SQLException {

    //System.out.println("releaseConnection Start");
    if( !Share ) {
    if( conn != null ) { conn.close(); }
    Share = false;
    //System.out.println("releaseConnection END");
    }
    return;
    }
    }
      

  2.   

    日文。。偶8喜欢这个错误是系统刚启动的时候报出来的错吗 ?偶没用过sqlserver,你看看可供连接的最大数值是多少,是不是满了,或者最大线程数到了