簡単な説明
私が関与しているプロジェクトでは、Eclipse Luna を IDE として使用して GWT 2.7 で作成されました。サーバー コードには、Hikari で構成された接続プール (バックエンドは mariadb データベース) があります ( http://brettwooldridge.github.io/HikariCP/)。1つのことを除いて、これはすべて正常に機能します..
問題
データベース サーバー (ubuntu) が爆発するのを避けるために、次のようなシャットダウン フックを実装しました。
public void addShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
dataSource.shutdown();
}
});
}
理想的には、接続プールに保持されている接続のクリーニングを処理します。ただし、Eclipse で [Terminate] ボタンをクリックして SDM をシャットダウンするときに気付いたのは、dataSource.shutdown(); ということです。おそらくサーバーが正常にシャットダウンされていないため、呼び出されることはありません。
上記の結果として (mariadb との組み合わせで) Linux に関する十分な知識がなく、これが正しいかどうかを判断することはできませんが、私には最も論理的に思えます)、最終的にサーバーが非常に遅くなり、最終的にそのリソースが使い果たされます。したがって、サーバーは接続を維持し、リソースが利用できなくなり、サーバーが爆発するまで n 回スタックすると仮定します。
質問
SDM を使用してこれらのリソースを適切にクリーンアップするにはどうすればよいですか? それとも、開発中に接続プールを使用せず、承認/本番環境でのみ使用する必要がありますか?
ありがとうございます