我正试图在环上运行Aleph,并使用lein ring server
进行更短的反馈循环。
当我调用lein ring server
一切似乎都很好,但当我把我的浏览器指向一个url,我得到一个讨厌的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}))
Lein-Ring插件使用嵌入式Jetty web服务器,而Aleph使用异步Netty web服务器。aleph.http/wrap-aleph-handler
中间件被设计为仅与以aleph.http/start-http-server
函数启动的Netty服务器一起工作。