iteye_9831 2009-06-11 13:37 采纳率: 100%
浏览 814
已采纳

tomcat 关闭的连接

碰到N次tomcat报:“关闭的连接”。

部分异常堆栈如下:
WARN [http-8080-Processor21] - Error while extracting database product name - falling back to empty error codes
org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is java.sql.SQLException: 关闭的连接
Caused by:
java.sql.SQLException: 关闭的连接
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.PhysicalConnection.getMetaData(PhysicalConnection.java:1605)
at org.apache.commons.dbcp.DelegatingConnection.getMetaData(DelegatingConnection.java:222)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.jdbc.BorrowedConnectionProxy.invoke(BorrowedConnectionProxy.java:40)

似乎是偶然网络中断一下,就会出现这个问题。出问题后,只有重启服务器。
开发环境下重启服务器也罢。
不知道生产环境下是怎样用Tomcat的(小型应用)。



[b]问题补充:[/b]
这个问题是可以重现的。

把网线拔掉,刷新页面,就会抛出“关闭的连接”异常。

再把网线插好,刷新页面,还是抛出这个错误。



[b]问题补充:[/b]
不知道是不是DBCP连接池的问题。

在网络瞬断的情况下,导致DBCP连接池不可用。
[b]问题补充:[/b]
是通过连接池使用数据库连接的,应该不可能存在显式的、关闭数据库连接的代码。
  • 写回答

6条回答

  • 「已注销」 2009-06-11 15:01
    关注

    [size=medium]DBCP连接池不会自动去检测连接(Connection)是不是有效,开始网络没断的时候假如默认的连接数是30个,如果突然网络断了,这些连接自然都无效了。此时程序如果再向DBCP要数据库连接,它并不去检测这些连接是不是可用,直接扔给你一个了事,这样的话,即使这个时候网络是OK的,程序还是会抛出异常。可以试试其它的连接池,像Spring之类的。实在不行做个公共的类来统一处理连接的获取和释放。[/size][color=red][/color]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面