![](/img/trans.png)
[英]clojure/ring/jetty: I am using > lein ring server. How do I configure the jetty instance that gets instantiated?
[英]How do I stop jetty server in clojure?
我正在使用 ring 和 clojure 编写一个 web 应用程序。我正在为开发服务器使用 jetty 适配器,为 IDE 使用 emacs/SLIME。虽然 wrap-reload 确实有帮助,但 run-jetty 阻止了我的 slime session,我希望能够随意启动/停止它,而不必在单独的终端 session 中运行它。理想情况下,我想定义一个服务器代理和函数 start-server 和 stop-server 来启动/停止代理内部的服务器。 这可能吗?
我的Ring应用程序中通常有一行如下所示:
(defonce server (run-jetty #'my-app {:port 8080 :join? false}))
这可以防止锁定REPL。 它还允许我重新编译此文件,而不必担心我的服务器将被重新定义。 它还允许您在REPL中进行交互,如下所示:
user=> (.stop server)
和
user=> (.start server)
Jetty文档提供了有关Jetty 正常关闭的一些信息。 这可能不是足够的信息,但它可能会让你开始。
我还没有开始使用compojure,但总的来说我更喜欢使用Tomcat。 它的功能更全面; 除此之外,还有一个记录良好的API用于启动和关闭它,它在专用端口上侦听shutdown命令; 有一些ant
任务可以做到这一点,当然也可以从Java应用程序中调用它们。 我只是不知道Compojure将REPL连接到Web容器的运行实例,以及是否/如何自动类重新加载...希望其他人能够提供更多信息。
12年后。
VS代码/卡尔瓦:
如果你像我一样从 VSCode / Calva 中的 repl 开始码头,你必须在终端而不是 REPL CTRL-C 服务器进程。
事实上,服务器进程绑定到终端而不是 REPL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.