首页 文章

如何在clojure中停止jetty服务器?

提问于
浏览
52

我正在使用ring和clojure编写Web应用程序 . 我使用jetty适配器开发服务器和emacs / SLIME for IDE . 虽然wrap-reload确实有帮助,但run-jetty会阻止我的粘贴会话,我希望能够随意启动/停止它,而无需在单独的终端会话中运行它 . 理想情况下,我想定义一个服务器代理和函数start-server和stop-server,它们将启动/停止代理中的服务器 . 这可能吗?

2 回答

  • 1

    我的Ring应用程序中通常有一行如下所示:

    (defonce server (run-jetty #'my-app {:port 8080 :join? false}))
    

    这可以防止锁定REPL . 它还允许我重新编译此文件,而不必担心我的服务器将被重新定义 . 它还允许您在REPL中进行交互,如下所示:

    user=> (.stop server)
    

    user=> (.start server)
    
  • 100

    Jetty文档包含有关Jetty的graceful shutdown的一些信息 . 这可能不是足够的信息,但它可能会让你开始 .

    我还没有更全面的功能;除此之外,还有一个记录良好的API用于启动和关闭它,它在专用端口上侦听shutdown命令;有 ant 任务可以执行此操作,当然也可以从Java应用程序调用它们 . 我只是不知道Compojure将REPL连接到Web容器的运行实例,以及是否/如何自动类重新加载...希望其他人能够提供更多信息 .

相关问题