关于java.sql.SQLRecoverableException: Closed Connection异常的解决方案(转)

在项目中碰到了一个应用异常,从表象来看应用僵死。查看Weblogic状态为Running,内存无溢出,但是出现多次线程堵塞。查看Weblogic日志,发现程序出现多次Time Out。

我们知道,Weblogic会自动检测线程运行超时,当超过特点时间(默认600S),即认为此线程为堵塞线程。在日志中发现多次堵塞线程,通过查找资料,发现Weblogic在发生多次线程堵塞后,会自动把应用挂起。默认次数为15次。

是什么造成了线程堵塞呢?通过进一步分析日志,我们发现在线程堵塞之前,发生了多次java.sql.SQLRecoverableException: Closed Connection异常。异常情况:

从表现来看是数据库连接出了异常。我们对数据库和网络进行了分析,确定数据库和网络都无异常。我们的另外一个应用在Weblogic运行没有类似问题。

最后在Oracle的论坛上找到了问题的根结,由于我们的应用是自己开发的数据库连接池,应用和数据库之间有一层防火墙。防火墙策略是对于1800s未使用的Socket连接将自动关闭。Oracle的日志中也发现Socket异常关闭的异常。我们对应用进行了调整,当连接池中的连接15分钟不用时,自动回收,问题解决。

http://blog.csdn.net/gavinloo/article/details/12206763

JDK1.6:
java.sql
Interface Statement:
setQueryTimeout

void setQueryTimeout(int seconds)
                     throws SQLException
Sets the number of seconds the driver will wait for a Statement object to execute to the given number of seconds. If the limit is exceeded, an SQLException is thrown. A JDBC driver must apply this limit to the execute, executeQuery and executeUpdate methods. JDBC driver implementations may also apply this limit to ResultSet methods (consult your driver vendor documentation for details).

Parameters:
seconds - the new query timeout limit in seconds; zero means there is no limit
Throws:
SQLException - if a database access error occurs, this method is called on a closed Statement or the condition seconds >= 0 is not satisfied
See Also:
getQueryTimeout()
 
时间: 2024-12-17 06:57:03

关于java.sql.SQLRecoverableException: Closed Connection异常的解决方案(转)的相关文章

解决weblogic错误:java.sql.SQLRecoverableException: IO Error: Broken pipe

首先说一下系统基础架构: 服务器:weblogic11g集群 数据库:oracle数据库Rac 出错信息: 1.java.sql.SQLRecoverableException: Closed Connection 2.Test "SELECT 1 FROM DUAL" set up for pool "mds-soa" failed with exception: "java.sql.SQLRecoverableException: IO Error:

java连接oracle数据库,关闭连接出现异常:java.sql.SQLRecoverableException: IO Error: Connection reset

java.sql.SQLRecoverableException: IO Error: Connection reset at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:612) at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:5094) at com.sms.send.StartTaskNew.run(SmsSend.java

java.sql.SQLRecoverableException: IO 错误: Socket closed

今天weblogic的alllog日志报了很多socket closed的错误. ### Cause: org.hibernate.exception.JDBCConnectionException: IO 错误: Socket closed at com.gg.corm.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23) ~[gg-top-corm-3.1.2-20141209.jar:na] at com.g

ojdbc在linux环境下 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题

开门见山,最快捷的解决方案:java -Djava.security.egd=file:///dev/urandom  -jar  xxxxxxx.jar 描述下问题:写了个jar工具,用到了连接池,ojdbc.windows环境一起正常.linux环境下启动关闭两三次后就出现 java.sql.SQLRecoverableException: IO 错误: Connection reset 查看配置文件和解析问题, 无果. 更换hikari到druid,无果. 使用最新ojdbc包,无果. 无

Linux 使用命令执行java -jar xxx.jar 在连接数据库时发生 java.sql.SQLRecoverableException: IO Error: Connection reset 错误

一.问题描述 1. jar 包在未打包之前执行没有问题 2.应用启动慢,并且此问题是一个偶尔性质的,也就是时有时无, 3.数据库连接数够用 4.发生错误的该连接是一个新的连接,不是服务端关闭导致的问题 二.问题原因 在Linux操作系统中,有一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器. /dev/random 在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节./dev/random可生成高随机性的公钥或一次性密码本.若熵池空了,对/dev/random的读操作将

在linux上通过JDBC连接ORACLE 时总是出现 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题

如标题所述,经过和度娘沟通了不知道多少遍最后看一篇文章解决, 我是通过执行jar来操作DB的.所以在命令中加了一个参数( 加粗,红色) eg: $JAVA_EXE -Djava.security.egd=file:///dev/urandom  -jar  xxxxxxx.jar 最终测试OK 参考的文章出处是:http://www.feexion.com/?p=247

关于利用动态代理手写数据库连接池的异常 java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to java.sql.Connection

代码如下: final Connection conn=pool.remove(0); //利用动态代理改造close方法 Connection proxy= (Connection) Proxy.newProxyInstance(conn.getClass().getClassLoader(), conn.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object pro

今天线上系统碰到个怪问题DBCP数据连接异常,java.sql.SQLException: Already closed.

java.sql.SQLException: Already closed. at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:84) ~[commons-dbcp-1.2.2.jar:1.2.2] at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.jav

Hibernate卡住,然后报错java.sql.SQLException: Unknown system variable 'language'异常

启动应用的时候会卡在: 08:22:58,221 DEBUG IntegratorServiceImpl:46 - Adding Integrator [org.hibernate.cfg.beanvalidation.BeanValidationIntegrator]. 08:22:58,226 DEBUG IntegratorServiceImpl:46 - Adding Integrator [org.hibernate.secure.spi.JaccIntegrator]. 08:22: