碰到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]
是通过连接池使用数据库连接的,应该不可能存在显式的、关闭数据库连接的代码。