Как отключить пул соединений Hikari в веб-приложении clojure ring, развернутом на tomcat в elasticbeanstalk

У меня есть HikariCP, работающий в моем кольцевом приложении clojure для пула соединений. Проблема в том, что я не знаю, где можно закрыть бассейн, поэтому я не знаю. Я разрешаю пулу умирать, когда это делает приложение, и никогда не закрываю его явно. Похоже, что это утечка соединений всякий раз, когда я повторно развертываю свое приложение в Elastic Beanstalk (который использует Tomcat), но я не совсем уверен. Мне интересно, где (если где-нибудь) хорошее место для размещения кода закрытия приложения, чтобы я мог явно закрыть свой пул соединений. К вашему сведению, текущий процесс развертывания заключается в выполнении lein ring uberwar и развертывании этой войны через пользовательский интерфейс elasticbeanstalk.


person Brad    schedule 29.10.2014    source источник


Ответы (1)


В вашем определении project.clj :ring, где вы указываете :handler, вы также можете указать ключи :init и :destroy с функциями, не принимающими аргументов, которые будут вызываться при запуске (для :init) и уничтожении (:destroy) вашего сервлета.

проект.clj:

:ring {:handler hello-world.core/handler
       :init hello-world.core/setup-connectionpool
       :destroy hello-world.core/shutdown-connectionpool}

См. документацию по lein-кольцу.

person NielsK    schedule 30.10.2014
comment
Это потрясающе! Спасибо! - person Brad; 03.11.2014