我刚开始在Clojure开发服务.我对如何接近服务器关机感到有点迷茫.
我正在使用Clojure 1.5.1.对于日志记录,我使用的是Timbre 1.5.3.我想将NREPL嵌入到我的服务器中以进行热代码部署.
这是我的core.clj文件.核心是我的主要,我正在使用"lein new app"生成的app shell.
(ns extenium.core
(:require [taoensso.timbre :as t]
[clojure.tools.nrepl.server :as nrs])
(:gen-class))
(def nrepl-server)
(defn start-nrepl-server []
(t/info "Starting nrepl server on port 8628")
(alter-var-root #'nrepl-server
(constantly
(nrs/start-server :port 8628)))
(t/info "Started nrepl server"))
(defn stop-nrepl-server []
(t/info "Stopping nrepl server")
(nrs/stop-server nrepl-server)
(t/info "Stopped nrepl server"))
(defn start []
(alter-var-root #'*read-eval*
(constantly
false))
(start-nrepl-server))
(defn stop []
(stop-nrepl-server))
(defn -main [& args]
(start))
Run Code Online (Sandbox Code Playgroud)
当我"lein run"时,nrepl-server按预期启动,并将信息消息发送到终端.然后我与Emacs的"nrepl"联系.没问题.从Emacs我执行"(extenium.core/stop)".此时,我在Emacs上收到"Stopping nrepl server"消息(意味着stdout被重定向到客户端).连接关闭(如预期的那样),我从未看到"已停止的nrepl服务器"消息.精细.
我看着终端,我没有看到"停止......"或"停止..."的消息.相反,我得到以下异常:
Exception in thread "nREPL-worker-0" java.lang.Error: java.net.SocketException: Socket closed
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要以下内容:
| 归档时间: |
|
| 查看次数: |
1911 次 |
| 最近记录: |