为什么会出现JDBC连接池的问题?
你指的是JDBC连接池连接超时失效问题的问题吧?
这是因为mysql默认保持连接的时间是8小时,如果这个连接在8小时内无人访问的话,就会关闭这个连接。但是连接池设计的时候没有考虑到这个问题,还把失效的连接拿出去就会导致出现异常。
解决方法:
1、创建一个线程每隔一段时间就测试一下连接,保持连接时最新的,永远达不到8小时无人访问。
2、连接池取连接的时候判定是否这个连接有效。
[java] view plain copy
if (conn.isValid(1000)){
return conn;
}
else{
return this.CreateConnection();
}
3、不使用连接池,直接拿了就用,用了就还。
连接池的概念:
用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。
JDBC数据库连接池接口(DataSource):
Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!
2024-12-19 广告