现象:
用LoadRunner测试时,并发用户选5时,跑上一小会就连接不上数据库了。我把大体代码罗列如下:
数据库为oracle9i,应用服务器为Tomcat,连接池使用Tomcat自带的DBCP
在单用户情况下从来没出过问题。关键代码:public class DBManager {
//该类实现单例模式public  ResultSet query(Connection con,String sql) throws Exception {
try {
stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stm.executeQuery(sql);
} catch (Exception e) {
//记录日志
}  return rs;
}public  Connection getConnection() throws SQLException {
if(null == dbConn) {
DBConfig dbconfig =new DBConfig(dbdriver,dburl,dbuser,dbpasswd);
dbConn = new DBConnection(dbconfig);
}
return dbConn.getConnection();  
}


public synchronized void close() {
        try{
            if(rs != null) {
                rs.close();
                rs = null;
            }
        }catch(SQLException e) {
            ;
        }
        try{
            if(stm != null) {
                stm.close();
                stm = null;
            }
        }catch(SQLException e) {
            ;
        }
    }}public class Search {
private ProgramInfoResponse searchProgramByID(String offeringId) throws Exception{
//该类实现单例
String sql = //省略
ResultSet rs = null;
ProgramInfoResponse pir = null;
Connection conn = null; try {

conn = DBManager.getInstance().getConnection();
rs = DBManager.getInstance().query(conn,sql);
if(rs.next()) {
//操作

} catch (Exception e) {
//日志
} finally {
if(rs != null) {
try{
rs.close();
}
catch(Exception e) {
;
}
}
if(conn != null) {
try{
conn.close();
}
catch(Exception e) {
;
}
}
DBManager.getInstance().close();
}
return pir;
}
}关键代码大致如上,
我现在怀疑DBManager和Search类是不是写得有问题,请各位指点