简体   繁体   中英

java.sql.SQLRecoverableException: No more data to read from socket when using a connection pool?

When I connect to a database using a connection pool I get this exception.

So then I tried connecting to the database using the basic Class.forName(); and DriverManager method I was able to do so.. why is this happening ?

This problem may arise wherever a connection pool is involved. The reason for this is as follows.

The Reason:

  • Say in your application you have configured a connection pool. And you ask for a 5 connection objects.
  • Your connection pool is usually handled by a Container like Tomcat, Spring, or CQ5(in my case)
  • Now you leave your application idle for some time, but the container and the connection pool is still active
  • And now the magic trick , the Database server restarts as per schedule.
  • This makes the alive/active connection objects inside your application servers's connection Pool BROKEN
  • So you come in the next moment and suddenly you get these errors when it was working fine some time ago.

The Solution:

  • You can reset the connection pool- This is the best option. This would delete the current broken Connections residing in the pool and forcefully create a new Connection Pool with new connection objects inside them.

  • You can restart the application server. Not recommended.(You can't keep restarting application servers in Production)

Reference Link

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM