gpt4 book ai didi

mysql - JSF 应用程序创建过多数据库连接

转载 作者:行者123 更新时间:2023-11-29 06:18:28 25 4
gpt4 key购买 nike

我使用 MYSQL 5.1 db 和 Tomcat 7 构建了一个(相对)简单的 JSF 应用程序。一切正常,没有任何问题,但有一个好奇心......

使用 MySQL 工作台,我可以看到,在一段时间内,我建立了一个不断增加的从未释放的数据库连接列表。每一项的格式如下:

[id] [user] [host] [dbname] [command] [time] [State] [info]

状态始终为空,命令始终为“ sleep ”。

在打开和关闭连接、语句时,我遵循最佳实践,据我所知,我的 ManagedBean 都没有与数据源有任何持久连接,一旦我这样做,所有这些都应该超出范围页面之间切换。

我正在努力寻找答案,部分原因是我不太确定该去哪里寻找。关于要审查/排除故障的任何建议,是否有一些我不知道的常见 JSF/DBCP 陷阱?

这可能有用:

<Resource 
name="jdbc/TrackerDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="10"
maxWait="100"
username="xxxx"
password="xxxx"
removeAbandoned="true"
removeAbandonedTimeout="300"
logAbandoned="true"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/tracker"
/>

最佳答案

您使用哪种持久性框架?

如果是 JPA,您应该每次close() EntityManager(超出范围还不够好)!

如果处于休眠状态,则每次都应该 close() session 。

如果是 JDBC,则每次都应该 close() 语句。

关闭此类资源通常在(try block 的)finally 子句中完成。

附言您没有提到关闭结果集。我想你也关闭了那些?

关于mysql - JSF 应用程序创建过多数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com