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
当我使用连接池连接到数据库时出现此异常。
然后我尝试使用基本的 Class.forName(); 连接到数据库;和 DriverManager 方法我能够这样做..为什么会这样?
凡是涉及到连接池的地方都可能出现这个问题。原因如下
原因:
- 假设在您的应用程序中配置了一个连接池。你要求 5 个连接对象。
- 您的连接池通常由容器处理,例如 Tomcat、Spring 或 CQ5(在我的例子中)
- 现在您让应用程序闲置一段时间,但容器和连接池仍然处于活动状态
- 现在魔术,数据库服务器按计划重新启动。
- 这会使应用程序服务器连接池中的 alive/active 连接对象损坏
- 所以你下一刻就来了,突然间你得到了这些错误,当它前一段时间工作正常时。
解决方法:
您可以重置连接池——这是最好的选择。这将删除池中当前断开的连接,并强制创建一个新的连接池,其中包含新的连接对象。
您可以重启应用服务器。不推荐。(你不能在生产中不断重启应用程序服务器)
引用Link