现象:
用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类是不是写得有问题,请各位指点
用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类是不是写得有问题,请各位指点
解决方案 »
- 请教一个jsp 页面 获取值的问题。
- tomcat启动报错
- mysql语句转换hql
- 求ldap中一些参数或属性介绍
- LogFactory.getLog(),Logger.getLogger()这两种记录日志的方法有撒区别啊?谢拉!
- 如何制作对生成出来的数据表格进行打印功能?
- 帮忙看两条jsp--sqlserver语句,为什么一条可以,一条不行,已经附上错误显示!
- 谁能提供火车票预定接口
- 我来贴出我的jsp代码,bean代码,servlet代码,请行家看看他们有价值么,算是mvc么?还是狗屁不是。多谢。300分为谢,多谢大家!
- 求一个在jsp中权限设置的解决方案
- 帮帮菜鸟
- jsp中向数据库添加数据失败
...
}
catch(Exception e) {
e.printStackTrace();//先把所有的异常捕获代码中将异常信息输出看看,别浪费时间‘猜谜语’:)
}