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

标签 java jdbc connection-pooling

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

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

最佳答案

只要涉及连接池,就可能出现此问题。其原因如下。

原因:

  • 假设您在应用程序中配置了连接池。并且您要求 5 个连接对象。
  • 您的连接池通常由 Tomcat、Spring 或 CQ5(在我的例子中)等容器处理
  • 现在您让应用程序空闲一段时间,但容器和连接池仍然处于 Activity 状态
  • 现在是魔术,数据库服务器按计划重新启动。
  • 这会使应用程序服务器连接池内的 Activity/Activity 连接对象中断
  • 因此,当您进入下一时刻时,突然出现这些错误,而前一段时间工作正常。

解决方案:

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

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

引用Link

关于java.sql.SQLRecoverableException : No more data to read from socket when using a connection pool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27898780/

相关文章:

mysql - 我是否需要在我的 (grails) Web 应用程序中使用 C3P0 池库?

java - Tomcat 在每次借用时验证连接

java - 当每个实例传递唯一值时,自定义 "Node"类的两个实例都会打印相同的值

java - 避免与 Java 中的静态类重复代码

java - 如何将文本字段中一次可见的字符数限制为小于文本字段的宽度?

java - 如何减少桌面应用程序中的 hibernate 内存使用?

java - 使用 JCS : Failed to retrieve javax. sql :jdbc-stdext-2. 0 时出错

mysql - 我在使用 JDBC 连接池吗?

java - 用于索引和搜索的 Lucene 分析器

java - 支持 Javascript 和 CSS 的 JEditorPane