早上系统换用proxool连接池后出现如下异常.
执行数据库操作的时候
警告:00021 (06/06/00) - #9 registered a statement as closed which was't known to be open高手指点下
执行数据库操作的时候
警告:00021 (06/06/00) - #9 registered a statement as closed which was't known to be open高手指点下
ojdbc.jar;启动了;url:
jdbc:oracle:thin:@192.168.96.10:1521:orcl查询数据没有问题,在更新数据的时候出现这个异常
连接代码如下:
public synchronized int openDB(int i) {
if (i == 1) {
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
//org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure("proxool.xml", false);
conn= DriverManager.getConnection("proxool.Develop");
if (conn != null) {
//stmt = conn.createStatement(ResultSet.HOLD_CURSORS_OVER_COMMIT,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY); }
else {
return 0; //server busy false;
}
}
catch (Exception ex) {
log("DatabaseBean.openDB: " + ex.getMessage());
return -1; //open error false;
}
}
return 1; //open success true;
}可以去得连接,但是出现异常,还有另一个异常似乎是连接没有关闭掉,系统自动关闭.
信息如下:
警告: #0004 was active fro 309214 millisseconds and has been removed automaticaly performed is unknown because the trace property is not enabled.求助阿!
昨天下午有事出去了,偶感觉是你的jdbc不支持滚动结果集的问题
去掉statement对象的close()方法
就不出警告了
{
if(currConnections.size()<MAX_CONNECTION) //若当前的连接数没有达到最大
{
try
{
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
conn= DriverManager.getConnection("proxool.Develop");
currConnections.add(conn);
}catch(Exception e){
log("DatabaseBean.getConnection:"+e.getMessage());
}
}
else //若当前已达到最大连接数
{
try
{
conn = (Connection) currConnections.firstElement(); //取得第一个连接
if(conn != null)
{
currConnections.remove(conn); //将其close
conn.close();
}
conn = getConnection(); //另外新建一个连接
}catch(Exception e){}
}
return conn;
}
根据自己对连接池的理解写的,不知道是否有逻辑上的错误?