如何关闭 clojure ring web 应用程序中的 Hikari 连接池部署到 elasticbeanstalk 中的 tomcat

Posted

技术标签:

【中文标题】如何关闭 clojure ring web 应用程序中的 Hikari 连接池部署到 elasticbeanstalk 中的 tomcat【英文标题】:How do I shutdown Hikari connection pool in clojure ring web app deployed to tomcat in elasticbeanstalk 【发布时间】:2014-12-25 12:59:33 【问题描述】:

我在我的 clojure ring 应用程序中运行了 HikariCP,用于连接池。问题是我不知道关闭游泳池的好地方所以我不是。当应用程序运行时,我允许池终止,并且从不明确关闭它。每当我将我的应用程序重新部署到 Elastic Beanstalk(使用 Tomcat)时,这似乎就是泄漏连接,但我并不完全确定。我想知道哪里(如果有的话)是放置应用程序关闭代码的好地方,这样我就可以明确地关闭我的连接池。仅供参考,当前的部署过程是执行 lein ring uberwar 并通过 elasticbeanstalk UI 部署该战争。

【问题讨论】:

【参考方案1】:

在您的 project.clj :ring 定义中,您指定 :handler,您还可以指定 :init:destroy 键,其函数不带参数,将在启动时调用(对于 :init)并销毁(:destroy)你的 servlet。

project.clj:

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

见lein-ring documentation

【讨论】:

这太完美了!谢谢!

以上是关于如何关闭 clojure ring web 应用程序中的 Hikari 连接池部署到 elasticbeanstalk 中的 tomcat的主要内容,如果未能解决你的问题,请参考以下文章

何时在Clojure Web应用程序中创建多个线程?

如何在 Clojure/Compojure/Ring 中将映射转换为 URL 查询字符串?

在这个简单的Clojure Ring应用程序中获取默认index.html文件以具有正确的Content-Type的正确方法是什么?

在 Clojure/Compojure 中转义/清理用户输入

Leiningen、Compojure、Luminus 和 Ring 是啥关系?

如何在 LeanCloud 上托管 Clojure web 应用