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