关于druid连接池,无法获取连接的问题
2017-05-04 18:33
561 查看
首先感谢:
http://www.cnblogs.com/spec-dog/p/6226212.html
从这篇博客中印证了我的猜测,确实是因为连接未关闭而引起的问题。
感谢:
http://jinnianshilongnian.iteye.com/blog/1881350
这篇博客详细的说明问题的原因!
--------------------------------------------------------------
因为持久层使用的是SpringData Jpa ,同时一般情况下不需要多次去查询数据库,就遇到了无法获取连接的问题。
今天做持久层的时候,发现一次请求查询多次数据库的情况下,会报错获取不到连接
这很奇怪,难道连接没有被自动关闭?? (我一直以为封装好了)
后来发现使用的 EntityManager 里是有close()方法的。。
---------------------------------------------------------
补充:
虽然加入close但是偶尔还是会出现无法获取连接的异常,查第二篇博客知道了原因: 这可能是个bug..
关键代码:
EntityManager target = null;
List list = null;
try {
target = em.getEntityManagerFactory().createEntityManager();
Query query = target.createNativeQuery(sql.toString())
.setParameter("tenancyId", tenancyId)
.setParameter("startDate", startDate)
.setParameter("endDate", endDate)
.setParameter("offset",pageRequest.getOffset())
.setParameter("pageSize",pageRequest.getPageSize());
list = query.unwrap(SQLQuery.class).list();
} catch (RuntimeException e) {
throw e instanceof IllegalArgumentException ? e : new IllegalArgumentException(e);
} finally {
EntityManagerFactoryUtils.closeEntityManager(target);
}
http://www.cnblogs.com/spec-dog/p/6226212.html
从这篇博客中印证了我的猜测,确实是因为连接未关闭而引起的问题。
感谢:
http://jinnianshilongnian.iteye.com/blog/1881350
这篇博客详细的说明问题的原因!
--------------------------------------------------------------
因为持久层使用的是SpringData Jpa ,同时一般情况下不需要多次去查询数据库,就遇到了无法获取连接的问题。
今天做持久层的时候,发现一次请求查询多次数据库的情况下,会报错获取不到连接
这很奇怪,难道连接没有被自动关闭?? (我一直以为封装好了)
后来发现使用的 EntityManager 里是有close()方法的。。
---------------------------------------------------------
补充:
虽然加入close但是偶尔还是会出现无法获取连接的异常,查第二篇博客知道了原因: 这可能是个bug..
关键代码:
EntityManager target = null;
List list = null;
try {
target = em.getEntityManagerFactory().createEntityManager();
Query query = target.createNativeQuery(sql.toString())
.setParameter("tenancyId", tenancyId)
.setParameter("startDate", startDate)
.setParameter("endDate", endDate)
.setParameter("offset",pageRequest.getOffset())
.setParameter("pageSize",pageRequest.getPageSize());
list = query.unwrap(SQLQuery.class).list();
} catch (RuntimeException e) {
throw e instanceof IllegalArgumentException ? e : new IllegalArgumentException(e);
} finally {
EntityManagerFactoryUtils.closeEntityManager(target);
}
相关文章推荐
- 关于使用tomcat自带连接池xapool偶尔无法获取数据库连接的问题(报空指针)
- java redis client无法连接redis服务获取连接池问题处理记录
- 关于spring boot整合druid连接池在程序关闭后连接不释放问题解决
- 关于PHP无法连接MSSQL数据库的问题
- 解决一个问题的思路 之“解决已经写满con.close() 仍然出现"但是尚未从池中获取连接"的连接池耗尽问题”
- c#中连接数据库关于sqlconnection的用户sa无法登录的问题
- 关于基于RDP协议的远程连接无法连接Windows server 2003目标机的问题
- 关于kindeditor提交无法获取到获取到值的问题
- asp.net 导入excel某列信息无法获取问题及excel 2007连接字符串
- 解决SSIS连接ODBC数据源时“无法从运行时连接管理器获取托管连接”的问题
- 解决SSIS连接ODBC数据源时“无法从运行时连接管理器获取托管连接”的问题
- 关于AssetsLibrary无法获取本地所有相册的问题
- 关于在英创em9161板上使用ADO.net连接远程数据库提示 “无法找到 PInvoke dll"dbnetlib.dll"”问题解决方法
- 【WEBAPI】关于WEBAPI无法获取数据的问题之一(Issues while making a POST to a Web API from JQuery)
- 关于PHP无法连接MSSQL数据库的问题
- 关于SQL2000无法远程连接的问题
- 几个问题(十二)------数据库连接池的实现原理,请求怎么样去获取连接,关闭连接时,连接池是销
- 关于Visual Studio无法连接到Visual Studio 的Localhost Web服务器问题
- 关于机房3750无法远程连接的问题
- J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题