快速解释
对于我参与的一个项目,使用 Eclipse Luna 作为 IDE 在 GWT 2.7 中创建,在我们的服务器代码中,我们有一个使用 Hikari 配置的连接池(后端是 mariadb 数据库)(http://brettwooldridge.github.io/HikariCP/)。这一切都很好,除了一件事..
问题
为了避免我们的数据库服务器(ubuntu)爆炸,我实现了一个关闭钩子,例如:
public void addShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
dataSource.shutdown();
}
});
}
理想情况下处理连接池中保存的连接的清理。然而,我注意到,当通过单击 Eclipse 中的 Terminate 按钮关闭 SDM 时,dataSource.shutdown(); 永远不会被调用,可能是因为服务器没有正常关闭。
以上似乎导致(我没有足够的 linux(与 mariadb 结合)知识来确定这是否属实,但对我来说似乎最合乎逻辑)最终使服务器变得非常慢,并最终耗尽其资源。所以我的假设是服务器保持连接处于活动状态,它们堆叠 n 次,直到资源不再可用并且服务器爆炸。
问题
如何使用 SDM 正确清理这些资源?或者我不应该在开发过程中使用连接池,而只在验收/生产环境中使用它?
谢谢你的时间