Краткое объяснение
Для проекта, в котором я участвую, созданного в GWT 2.7 с использованием Eclipse Luna в качестве IDE, в коде нашего сервера у нас есть пул соединений (база данных mariadb), настроенная с помощью Hikari (http://brettwooldridge.github)..io/HikariCP/). Все работает отлично, кроме одного..
Проблема
Чтобы избежать взрыва нашего сервера базы данных (ubuntu), я реализовал ловушку отключения, например:
public void addShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
dataSource.shutdown();
}
});
}
Идеально справляется с очисткой соединений, хранящихся в пуле соединений. Однако при выключении SDM нажатием кнопки «Завершить» в eclipse я заметил, что dataSource.shutdown(); никогда не вызывается, вероятно, потому, что сервер не выключается корректно.
Вышеупомянутое кажется результатом (у меня недостаточно знаний linux (в сочетании с mariadb), чтобы выяснить, правда ли это, но мне это кажется наиболее логичным), чтобы в конечном итоге сделать сервер чрезвычайно медленным и в конечном итоге исчерпать его ресурсы. Итак, я предполагаю, что сервер поддерживает соединения, они складываются n раз, пока ресурсы больше не будут доступны, и сервер не взорвется.
Вопрос
Как правильно очистить эти ресурсы с помощью SDM? Или мне не следует использовать пул соединений во время разработки, а использовать его только в среде принятия/производства?
Спасибо за ваше времяb
minimumIdle=0
иidleTime=30000
(30 секунд), поэтому, как правило, в пуле не будет много (или вообще) подключений – в основном это будут создается по требованию. - person brettw   schedule 21.02.2015