hibernate - Jboss 7没有释放连接

标签 hibernate grails jboss database-connection grails-orm

我的 grails 应用程序在 Jboss 6.0 上运行。
在加载时,我们注意到一些连接挂起并留在数据库中的事件 session 中。
连接管理完全由 grails 负责,我们不会打开/关闭任何连接。确保如果丢失任何连接,则从代码中关闭。
我们在数据源中添加了 track-statement ,但我们在日志文件中没有看到任何问题。
我们也尝试了查询超时。它不起作用,因为 DB session 处于事件状态

使用大小为 300 的 jboss 连接池

Grails 2.3.5 版
hibernate 版本: hibernate :3.6.10.7
应用服务器:jboss 6
数据库:Oracle 10g

所以我的问题是
1)如何知道它为什么持有?
2)有没有办法为连接配置连接超时。

最佳答案

根据您正在运行的配置,您可能有一个开箱即用的 JDBC 连接池。池的工作是保持一定数量的连接打开并准备好使用。建立一个新的连接稍微昂贵(身份验证、加密握手等),所以如果不是所有连接都关闭,你可能不应该 panic 。但是,如果打开一个高数字或不断增加的数字,您应该警惕。我认为 50 是典型的默认值。

通常,等待更多信息 - 是的,您可以配置很多有关连接池数据源的信息。包括一次打开多少个连接,maxIdle(在空闲时应该保持多少个连接)maxConnections,池管理器应该审核连接并清理它们的时间范围,或者如果它们超过maxIdle则关闭任何空闲连接等...

通常,当应用程序完成特定连接时,通常是在单个 HTTP 请求结束时,它会将连接返回到池,池对其进行一些清理,重置它,但保持它打开并准备好下一个请求。

查看 JDBC 2.0 Connection Pool Documentation :

并查看 Oracle JDBC Developer's Guide 10g

关于hibernate - Jboss 7没有释放连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910363/

相关文章:

java - 无法从 IntelliJ 作为调试 JBOSS 项目运行

java - 将自定义对象绑定(bind)到 JMS MapMessage

eclipse - Grails项目:运行方式(在服务器上运行)vs运行方式(run-app)

java - JAXb、Hibernate 和 bean

hibernate - 恩弗斯 : How to add a new column in *_AUD table (not in REVINFO table)

java - Hibernate 继承 SingleTable

search - 使用Grails和Groovy分割字符串并为每个单词搜索一个域

grails - 版本在DateTime之前发布域类

java - 为什么我不能打开 JBoss vfs :/URL?

hibernate - hibernate中保存大量记录的最佳方法