在使用Spring jdbc连接数据库时遇到一个头疼的问题:程序启动以后,如果长时间不访问调用,当再次调用时会报错:

引用

org.springframework.dao.DataAccessResourceFailureException: ConnectionCallback; SQL []; IO 错误: Software caused connection abort: recv failed; nested exception is java.sql.SQLRecoverableException: IO 错误: Software caused connection abort: recv failed 
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:253)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:349) 
at services.dao.DBUtil.subRptInfo(DBUtil.java:208) 
at services.impl.ServiceImpl.subRptInfo(ServiceImpl.java:170) 
at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
Caused by: java.sql.SQLRecoverableException: IO 错误: Software caused connection abort: recv failed 
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1062) 
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329) 
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584) 
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3685) 
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4714) 
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1376)
at org.apache.commons.dbcp.DelegatingCallableStatement.execute(DelegatingCallableStatement.java:221) 
at services.dao.DBUtil$2.doInConnection(DBUtil.java:260) 
at services.dao.DBUtil$2.doInConnection(DBUtil.java:1) 
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342) 
... 39 more 
Caused by: java.net.SocketException: Software caused connection abort: recv failed 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(SocketInputStream.java:147) 
at oracle.net.ns.Packet.receive(Packet.java:300) 
at oracle.net.ns.DataPacket.receive(DataPacket.java:106) 
at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315) 
at oracle.net.ns.NetInputStream.read(NetInputStream.java:260) 
at oracle.net.ns.NetInputStream.read(NetInputStream.java:185) 
at oracle.net.ns.NetInputStream.read(NetInputStream.java:102) 
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124)
at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) 
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1137) 
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:290) 
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) 
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) 
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:204) 
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1041) 
... 48 more 

到处寻找资料后,发现是由于当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接造成的。解决方法是,在jdbc配置中加上:

Xml代码  
  1. <property name="validationQuery">
  2. <value>select * from dual</value>
  3. </property>

这样客户端在使用一个无效的连接时会先对该连接进行测试,如果发现该连接已经无效,则重新从连接池获取有效数据库连接来使用。

使用Spring JDBC时遇到的Software caused connection abort: recv failed问题相关推荐

  1. [MySQL]Software caused connection abort: recv failed 问题分析与解决

    原文:http://blog.csdn.net/chuan122345/article/details/4894398 在项目开发时,遇到该异常,通过搜索在mysql官方网站上发现如下说明: I am ...

  2. 解决:java.net.SocketException: Software caused connection abort: recv failed

    前言:最近在学习 NIO 和netty 相关知识时,在bio的模式下,遇到了 java.net.SocketException: Software caused connection abort: r ...

  3. Software caused connection abort: recv failed

    2019独角兽企业重金招聘Python工程师标准>>> Software caused connection abort: recv failed 博客分类: 异常 Software ...

  4. Android studio ERROR: Software caused connection abort: recv failed 解决方法

    使用Android studio打开kotlin项目时报错:ERROR: Software caused connection abort: recv failed 解决方法:修改三个文件即可 1.修 ...

  5. 关于socket write error 和Software caused connection abort: recv failed 错误

    Software caused connection abort: recv failed  错误 @Overridepublic void run() {// TODO Auto-generated ...

  6. linux ssh 远程登陆 报错 software caused connection abort 解决方法

    使用远程登录工具putty或者SecureCRT连接到服务器时,长时间不操作造成网络中断,出现Software caused connection abort Software caused conn ...

  7. github上传文件遇到错误:kex_exchange_identification: read: Software caused connection abort banner exchange:

    问题场景 github上传文件时,连接不上ssh,输入ssh -T git@github.com,检查连接,出现以下错误: kex_exchange_identification: read: Sof ...

  8. 解决SSH连接出现 Software caused connection abort 的问题

    解决SSH连接出现 Software caused connection abort 的问题 参考文章: (1)解决SSH连接出现 Software caused connection abort 的 ...

  9. 异常:Software caused connection abort: socket write error

    异常:Software caused connection abort: socket write error 参考文章: (1)异常:Software caused connection abort ...

最新文章

  1. 多通道接收机幅相校准测试系统的设计
  2. SQL基础【二、SQL语法】
  3. 用户操作-登录代码实现
  4. CODE[VS] 1621 混合牛奶 USACO
  5. Caffe源码解析1:Blob
  6. 你必须『收藏』的Github技巧
  7. python的selenium模块_python-爬虫-selenium模块
  8. Flink 在 B 站的多元化探索与实践
  9. Android 签名文件的sha1值查看
  10. 音视频播放器—初始化操作
  11. 3DMax 安装 超图 插件
  12. Cpu调优 mpstat 命令
  13. 广告行业中那些趣事系列36:腾讯2021广告大赛多模态视频广告标签baseline介绍和优化思路...
  14. Jmeter 接口造数
  15. 【emmm】快速算三角形角度
  16. 为什么选择WordPress作为企业CMS?
  17. 吴甘沙:5G爆发得从点开始 商业路径比技术难
  18. 吉林大学计算机科学与技术专业(研)解读
  19. 基于NPOI导入导出excel的工具,方便灵活
  20. 树和二叉树的概念、性质、计算

热门文章

  1. python主函数入口_python类 + mian()函数
  2. 官方 STM32F303ZE Nucleo-144开发板 点亮led
  3. 22.创建DockWidget
  4. python中123+5.0的执行结果_python实战笔记(一)
  5. 【openMV】OpenMV4基础知识
  6. 点云谱聚类实现代码_Spark跑DBSCAN算法,工业级代码长啥样?
  7. 进程的描述与控制 操作系统第二章知识点归纳总结
  8. java并发之Future与Callable使用
  9. centos 网卡名称修改
  10. Spring初始化机制