NullPointerException, когда сервер lein ring на Aleph+Ring
Я пытаюсь запустить Aleph поверх Ring и использовать 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}))
1 ответ
Решение
Плагин Lein-Ring использует встроенный веб-сервер Jetty, а Aleph - асинхронный веб-сервер Netty. aleph.http/wrap-aleph-handler
промежуточное ПО предназначено только для работы с сервером Netty, запущенным с aleph.http/start-http-server
функция.