I am getting stale connection error when there is no requests to the database from my java application for couple of hours.
Little background about my application:
Its a simple java application runned on Linux box with OCI (type driver). Dont ask me why OCI, why not thin. I am using OracleDataSource and OracleConnectionCacheManager for maintaining the cache of connection objects. Here is the code snippet:
The error is as follows:
ConnectionManager.java:getConnection:87 - Exception while getting Connection object:
java.sql.SQLException: Invalid or Stale Connection found in the Connection Cache
Please let me know what am i missing. I will be very thankful to you.
Jeanne Boyarsky wrote:Does the caller of this code close the connection when done with it?
Another possibility that your datasource is not sized correctly. Some datasources need the minimum size to zero or they hang on to open connections.
Thanks for your reply.
The caller code is closing the connection object. I am pretty sure about it. After some research, i have found the same suggestion as you mentioned above(making the minimum size to zero).
I have talked to my DBA and according to him on the database, the connection objects are closed if they are idle for 30 mins. My pool minimum size is 1, hence if there is no requests to the DB for more than 30 mins, that connection object is becoming stale.
Having said that, I am still not able to understand the functionality of refreshCache(), why it is not refreshing the invalid connections.