如何停止整合系统

时间:2018-11-19 14:16:02

标签: clojure

上下文:我正在尝试设置集成程序,以便可以停止和启动码头服务器

我得到: IllegalArgumentException不知道如何从以下位置创建ISeq:clojure.lang.Var $ Unbound clojure.lang.RT.seqFrom(RT.java:542)

当试图停止我的集成系统时。

我的代码:

(defn handler [request]
{:status 200
 :headers {"Content-Type" "text/html"}
 :body "Hello World!"})

(def config
    {:handlers/system {:port 3000
                       :host "localhost"
                       :join? true
                       :http? true
                       :ssl? false}})

(defmethod ig/init-key :handlers/system [_ cfg]
  (jetty/run-jetty handler cfg))

(defmethod ig/halt-key! :handlers/system [_ server]
    (.stop server))

(defn start []
    (def sys (ig/init config)))

(defn stop []
    (ig/halt! sys))

(defn resume []
    (ig/resume config sys))

(defn reset []
    (stop)
    (start))

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

问题出在:join的配置中?设置为true。这阻塞了进程,这意味着在repl中使用ctrl + c之后,尚未将sys设置为(ig / init config)的返回值,因此当调用stop时,它试图在未绑定fn,导致OP中提到的错误。