如果连接数据库的时间太长,数据库通常会回收这个连接(断开连接)。MySQL一般是8小时,Oracle可能是10分钟。
为了提升性能,通常会使用数据库连接池技术,连接池会长时间持有连接,如果这时数据库断开了连接,而连接池并不知道,就会导致错误。
常见的错误信息有:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 1 milliseconds ago.
java.net.SocketException: 断开的管道
Couldn't rollback jdbc connection. No operations allowed after connection closed.
Jspxcms使用Tomcat JDBC连接池,加上一下配置可以避免这个问题:
Tomcat JDBC在Spring中的完整配置: