0

我使用 Primefaces / JSF2。由于特殊情况,我们使用 jdbc 连接而不是连接池。每个登录用户一次将拥有一个且唯一的数据库连接。如果登录用户关闭浏览器而不是正确注销,他的数据库连接将保持到空闲超时(15 分钟),并且他无法在这 15 分钟超时内立即再次登录。

如果他关闭浏览器而不是注销,有什么方法可以关闭用户数据库连接?

4

1 回答 1

4

不,没有办法。至少,没有可靠的方法。您也许可以将会话超时设置为 1 分钟,通过 ajax 轮询使其保持活动状态并HttpSessionListener#sessionDestroyed()用于关闭连接。但是,整个方法仍然非常脆弱并且容易失败。

您应该始终try-finally在触发 SQL 查询/查询的同一块内尽可能短的范围内获取和关闭数据库资源,没有任何借口。Java EE Web 应用程序实际上无法与普通的 Java 桌面应用程序相提并论,在后者中,如果由于 DB 资源泄漏而崩溃,最终用户可以重新启动有缺陷的应用程序本身。

也可以看看:

于 2013-09-02T14:48:14.413 回答