Java 关闭浏览器上的数据库连接关闭
我使用Primefaces/JSF2。由于一种特殊情况,我们使用jdbc连接而不是连接池。每个登录的用户一次只能保持一个DB连接。如果登录用户关闭浏览器而不是正确注销,则其DB连接将一直保持到空闲超时(15分钟),并且在这15分钟超时内无法立即再次登录Java 关闭浏览器上的数据库连接关闭,java,jsf,Java,Jsf,我使用Primefaces/JSF2。由于一种特殊情况,我们使用jdbc连接而不是连接池。每个登录的用户一次只能保持一个DB连接。如果登录用户关闭浏览器而不是正确注销,则其DB连接将一直保持到空闲超时(15分钟),并且在这15分钟超时内无法立即再次登录 如果用户关闭浏览器而不是注销,有没有办法关闭用户数据库连接?没有,没有办法。至少,没有可靠的方法。您可以将会话超时设置为1分钟,使用ajax轮询使其保持活动状态,并使用HttpSessionListener#sessionDestroyed()关
如果用户关闭浏览器而不是注销,有没有办法关闭用户数据库连接?没有,没有办法。至少,没有可靠的方法。您可以将会话超时设置为1分钟,使用ajax轮询使其保持活动状态,并使用
HttpSessionListener#sessionDestroyed()
关闭连接。但是,整个方法仍然非常脆弱,容易失败
您应该始终在与触发SQL查询的位置相同的try finally
块中,在尽可能短的范围内获取并关闭数据库资源,不要找借口。JavaEEWeb应用程序实际上无法与普通Java桌面应用程序相比,在普通Java桌面应用程序中,如果由于DB资源泄漏而崩溃,最终用户可以重新启动有缺陷的应用程序本身
另见:
- -虽然与您的问题不完全相同,但答案非常适用于您的情况
- 不,没有办法。至少,没有可靠的方法。您可以将会话超时设置为1分钟,使用ajax轮询使其保持活动状态,并使用
HttpSessionListener#sessionDestroyed()
关闭连接。但是,整个方法仍然非常脆弱,容易失败
您应该始终在与触发SQL查询的位置相同的try finally
块中,在尽可能短的范围内获取并关闭数据库资源,不要找借口。JavaEEWeb应用程序实际上无法与普通Java桌面应用程序相比,在普通Java桌面应用程序中,如果由于DB资源泄漏而崩溃,最终用户可以重新启动有缺陷的应用程序本身
另见:
- -虽然与您的问题不完全相同,但答案非常适用于您的情况