假设我有一个使用'[pandeiro.boot-http :refer [serve]]
的简单boot-clj任务。如果我进行更改并需要重新启动任务,则会抱怨端口已在使用中。有没有办法杀死jetty服务器而不必重新启动repl?
答案 0 :(得分:0)
如果你只想要这么多人使用这种模式:
(defonce running-server (atom nil))
(defn stop-server [] (@running-server))
(defn go []
(reset! running-server
(org.httpkit.server/run-server
... your stuff here ...))
如果这是一个较长期的项目,从组件框架开始,以更优雅的方式解决了这个问题,并允许许多依赖组件(因此名称)。在开始下一个项目之前,这是good place to get started并且值得一读。
答案 1 :(得分:0)
pandeiro.boot-http
支持重新加载处理程序,因此您无需重新启动serve
任务。您需要使用:reload
set to true
配置它:
在命令行上:
boot serve -H myapp.server/app -R wait
或者在你的启动脚本中:
(boot (serve :handler 'myapp.server/app :reload true) (wait))
对于常规静态文件serve
始终从磁盘返回当前版本,因此无需为它们重新加载。
如果您确实需要重新启动任务,我猜您可能会受到pandeiro.boot-http
中issue的影响,可能需要与其维护人员联系。