现场的weblogic报错,导致数据无法下发,报错信息如下:
### Error opening session. Cause: org.hibernate.exception.GenericJDBCException: Connection closed
### Cause: org.hibernate.exception.GenericJDBCException: Connection closed
com.gg.corm.exceptions.PersistenceException:
### Error opening session. Cause: org.hibernate.exception.GenericJDBCException: Connection closed
### Cause: org.hibernate.exception.GenericJDBCException: Connection closed
连接被关闭,我觉得有两种问题,一是weblogic有设置非活动超时时间导致,二是Oracle数据库sqlnet.ora中的超时设置导致。
之前写过java.sql.SQLRecoverableException: IO 错误: Socket closed ,非活动超时时间在数据源-->连接池-->高级中设置,设置为300,如果还报这种错,还需要设大,直到不报错,当然,最好是优化功能。
这个参数的作用是回收非活动的连接,防止连接泄漏。但还有一个副作用,是关闭响应时间长的SQL的连接,这个没有官方文档,是在公司做了几天测试偶然发现,测试结果是: 找了一个功能为100s的,做了个测试:
非活动连接超时 等待多少秒后报错
1 20s
5 16s
10 40s
15 不报错,等待120s后功能出来了
30 同上
50 同上