我正在尝试在Ring上运行Aleph并使用lein ring server
来缩短反馈循环。
当我调用lein ring server
时,一切似乎都很好但是当我将浏览器指向一个网址时,我会得到一个令人讨厌的NullPointerException
下面的堆栈跟踪。
但是,当我运行(al.app/start 3006)
时,不显示NLP
。
整个项目可在GitHub上找到。
我做错了什么?
core.clj:107 lamina.core/enqueue
app.clj:39 al.app/hello-handler
http.clj:79 aleph.http/wrap-aleph-handler[fn]
response.clj:27 compojure.response/eval1328[fn]
response.clj:10 compojure.response/eval1289[fn]
core.clj:93 compojure.core/make-route[fn]
core.clj:39 compojure.core/if-route[fn]
...
我正在使用aleph 0.3.2,这是我的代码:
(ns al.app
(:use
aleph.http
lamina.core
compojure.core
ring.middleware.keyword-params)
(:require [compojure.route :as route]))
(defn hello-handler
"Our handler for the /hello path"
[ch request]
(let [params (:route-params request)
name (params :name)]
(enqueue ch
{:status 200
:headers {}
:body (str "Hello " name)})))
(defroutes my-routes
(GET ["/hello/:name", :name #"[a-zA-Z]+"] {} (wrap-aleph-handler hello-handler))
(route/not-found "Page not found"))
(defn start
"Start our server in the specified port"
[port]
(start-http-server (wrap-ring-handler my-routes) {:port port}))
答案 0 :(得分:0)
Lein-Ring插件使用嵌入式Jetty Web服务器,而Aleph使用异步Netty Web服务器。 aleph.http/wrap-aleph-handler
中间件仅适用于以aleph.http/start-http-server
函数启动的Netty服务器。