java.sql.SQLRecoverableException: 使用连接池时没有更多数据可从套接字读取?

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

当我使用连接池连接到数据库时出现此异常。

然后我尝试使用基本的 Class.forName(); 连接到数据库;和 DriverManager 方法我能够这样做..为什么会这样?

凡是涉及到连接池的地方都可能出现这个问题。原因如下

原因:

  • 假设在您的应用程序中配置了一个连接池。你要求 5 个连接对象。
  • 您的连接池通常由容器处理,例如 Tomcat、Spring 或 CQ5(在我的例子中)
  • 现在您让应用程序闲置一段时间,但容器和连接池仍然处于活动状态
  • 现在魔术,数据库服务器按计划重新启动。
  • 这会使应用程序服务器连接池中的 alive/active 连接对象损坏
  • 所以你下一刻就来了,突然间你得到了这些错误,当它前一段时间工作正常时。

解决方法:

  • 您可以重置连接池——这是最好的选择。这将删除池中当前断开的连接,并强制创建一个新的连接池,其中包含新的连接对象。

  • 您可以重启应用服务器。不推荐。(你不能在生产中不断重启应用程序服务器)

引用Link