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 функция.

Другие вопросы по тегам