-
关于No ManagedConnections available within configure
添加时间:2013-6-25 点击量:比来因为体系和营业重构须要,须要把线上1亿数据迁徙到新库,因为营业变革,新表老表布局有变更,没法直接用dba dump的体式格式,须要本身写转换法度迁徙。今天在调试的时辰,碰着一个蛋疼的题目,就是一开端查询数据都正常,然则查询几条后日记就会报超时错误,具体日记如下:
No ManagedConnections available within configured blocking timeout ( 5000 [ms] ); - nested throwable: (javax.resource.ResourceException: No ManagedConnections available within configured blocking timeout ( 5000 [ms] ))
搜了下这个错误,各类说法斗劲多,然则感触感染都没说到点上,找DBA看了下,DBA直接默示这个库连接数一向吃紧,从这个错误看也是连接超时,底本认为就这么着了,然则调试了几次都是一开端正常,后来报异常,就感触感染必然还是代码有题目导致连接数吃紧,后来细心看了下代码,发明是connection没有封闭...应当说是没有封闭全。把PrepareStatement和ResultSet封闭了,然则没把最首要的Connection封闭掉...封闭了Connection就正常了。
网上几个搜的成果太过于误导人,所以就记录一下,碰着这个错误,起首是确认本身代码是否有相干connection没封闭掉,根蒂根基都是没封闭connection导致的,最后再确认数据库连接数是不是真的吃紧。
如下代码仅供参考:
1 try{
2 conn = sourceDs.getConnection();
3 ps = conn.prepareStatement(TcBizOrder);
4 rs = ps.executeQuery();
5 if(rs.next()){
6 result.put(auction_id, rs.getLong(auction_id));
7 result.put(logistics_status, rs.getInt(logistics_status));
8 result.put(attributes, rs.getString(attributes));
9 return result;
10 }else{
11 return null;
12 }
13 }catch(SQLException e){
14 LogFactory.getTaskLog().error([ tc_biz_order SQLException], bizOrderId=+bizOrderId, e);
15 return null;
16 }catch(Exception e){
17 LogFactory.getTaskLog().error([ tc_biz_order other Exception], bizOrderId=+bizOrderId, e);
18 return null;
19 }finally{
20 if(rs != null){
21 try{
22 rs.close();
23 }catch(SQLException e){
24 LogFactory.getTaskLog().error([close ResultSet SQLException], bizOrderId=+bizOrderId, e);
25 }
26 }
27
28 if(ps != null){
29 try {
30 ps.close();
31 } catch (SQLException e) {
32 LogFactory.getTaskLog().error([close PreparedStatement SQLException], bizOrderId=+bizOrderId, e);
33 }
34 }
35
36 if(conn != null){
37 try{
38 conn.close();
39 }catch(SQLException e){
40 LogFactory.getTaskLog().error([close Connection SQLException], bizOrderId=+bizOrderId, e);
41 }
42 }
43 }
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。