Glassfish Derby连接池,未返回到池的连接
问题描述:
我在我的(简单)应用程序中使用Glassfish 3.1,JEE6 JPA注释,Hibernate提供程序和Derby数据库。我似乎在连接池方面遇到很多困难。基本上,我的应用程序运行良好,没有安全性,但现在我创建了一个安全领域,我发现无论我设置池的大小是多少,我都会运行连接。显然,我在我的代码中执行了一些操作,这意味着在servlet请求结束后连接不会返回到池中。Glassfish Derby连接池,未返回到池的连接
我见过StackOverflow上的各种发布和建议,并尝试过所有...似乎没有任何工作。
我想知道的是...我如何从Glassfish中获取日志和跟踪信息?我需要找出为什么它没有返回连接池。这样我希望能够找到问题的根源。
非常感谢!
答
它始终是第一个猜测,由于缺乏清理,连接没有返回到池中。
确保:
- 接近你打开
- 近,你在每一个路径使用
所有EntityManagers所有连接。
这是很好的做法,这样做
使用
try
{
//open
//work
}
catch
{
//exception handling
}
finally
{
//close
}
任何地方,你来处理这些情况。
边注意: 像findbugs/sonar静态分析器能够检测到这些情况。
你是否在你的finally块或任何地方调用connection.close()?您需要关闭连接,才能将其返回到池中。 – oers
我将entityManager.clear()和entityManager.close()作为我的提交代码的一部分调用>我不直接访问连接。我可以做?我以为容器处理了Entity Manager后面的连接。 –
这应该够了。它总是第一次猜测,由于缺乏清理,连接不会返回到池中。 – oers