我正在使用JDBCTemplate。对于一个特定的查询,JDBCTemplate在调用超过3-4次后挂起,有时在15-20次尝试后挂起。我在我的代码中没有发现任何bug。
private String getXXX(String table)
{
System.out.println("Test 1");
final List<String> data = getJdbcTemplate().queryForList(SELECT_TBL_NME,
new Object[] { table }, String.class);
System.out.println("Test 2");
ret = data.size() > 0 ? data.get(0) : null;
return ret;
}如果函数被调用超过15次,或者有时甚至在第三次或第四次调用之后,控制台在"Test 1“处挂起,没有任何错误。
发布于 2012-10-17 21:18:28
问题似乎是你没有关闭连接。
final List data = getJdbcTemplate().queryForList(SELECT_TBL_NME, new Object[] { table}, String.class);上面的行永远不会结束,因为JdbcTemplate正在等待从您的数据库获取连接。
因此,如果你的数据库不能给你一个连接,你的应用程序正在等待,它什么也不做。
可能的修复方法:由于您使用的是Spring,请检查您没有在queryForList方法之外执行操作。
几个月前,我遇到了同样的问题,因为我在queryForList方法之外调用ResultSet.getMetaData(),但没有释放/关闭连接。
发布于 2012-07-17 22:29:41
问题可能不在Java层中。
首先,试着检查你的:
https://stackoverflow.com/questions/11524127
复制相似问题