I seems to have a strange problem with DBCP and Oracle Connection poll mechanism. Here how it goes.
I'm using Oracle 10g Database and my applicaiton is running on Tomcat 5.1 and my DBCP version is 1.2
1. Get Database connection from DBCP BasicDataSource ds
ex :- conn = ds.getConnection()
2. Create a Statement from conn, conn.createStatement()
3. Get ResultSet from Statement stmt, stmt.executeSql(sql)
4. Now, Shutdown the oracle DB or disconnect the client from Server (remove the Lan cable)
5. execute one more SQL query like stmt.executeSql(sql)
6. SQL Exception is thrown at during point 5 , like 17002:I/O error
7. Exception is occurred if i close the connection, conn.close(); (Error Code 0 and message is connection is already closed)
8. At this point, DBCP is not returning the connection to ideal pool, means Connection still has active status and we can check the active status from BasicDataSource like bs.getNumActive()
I think its bug with DBCP if now I hope someone can to light to solve this issue.