Cuando estaba llamando directamente al controlador de amarre, yo era capaz de pasar de un configurador de este modo:clojure/ring/jetty: Estoy usando> lein ring server. ¿Cómo configuro la instancia de embarcadero que se crea una instancia?
(def header-buffer-size 8388608)
(defn start [port]
(ring/run-jetty
(var app)
{:port port
:join? false
:host "127.0.0.1"
:configurator
(fn [jetty]
(doseq [connector (.getConnectors jetty)]
(.setHeaderBufferSize connector header-buffer-size)))}))
que tenía que hacer esto porque seguí recibiendo un error de la cabeza llena enviar el mensaje. Ahora refactored cosas para usar> lein ring server directamente, que se llama desde la línea de comandos.
> lein ring server
Este utiliza una configuración especificada en mi project.clj:
:ring {:handler caribou.api.core/app
:servlet-name "caribou-api"
:init caribou.api.core/init
:port 33443}
Esto funciona muy bien, pero ahora estoy consiguiendo el tema completo de la cabeza de nuevo. Así que he intentado añadir un configurador de allí:
:ring {:handler caribou.api.core/app
:servlet-name "caribou-api"
:init caribou.api.core/init
:configurator
(fn [jetty]
(doseq [connector (.getConnectors jetty)]
(.setHeaderBufferSize connector 8388608)))
:port 33443})
Y esto no funciona con este StackTrace:
Exception in thread "main" java.lang.ClassCastException:
clojure.lang.PersistentList cannot be cast to clojure.lang.IFn
at ring.adapter.jetty$run_jetty.invoke(jetty.clj:66)
at ring.server.standalone$serve$fn__833.invoke(standalone.clj:78)
at ring.server.standalone$try_port.invoke(standalone.clj:12)
at ring.server.standalone$serve.doInvoke(standalone.clj:75)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at ring.server.leiningen$serve.invoke(leiningen.clj:20)
pensé que esto tenía que ver con poner la función directamente en el mapa de esa manera, así que definida fuera del proyecto (en caribou.api.core) y trató refiriéndose a ella como a mí el resto de las funciones definidas en otra parte:
;; in caribou/api/core.clj
(def header-buffer-size 8388608)
(defn full-head-avoidance
[jetty]
(doseq [connector (.getConnectors jetty)]
(.setHeaderBufferSize connector header-buffer-size)))
;; in project.clj
:ring {:handler caribou.api.core/app
:servlet-name "caribou-api"
:init caribou.api.core/init
:configurator caribou.api.core/full-head-avoidance
:port 33443})
Esta gira hasta la aplicación, pero sigo teniendo el 413: FULL CABEZA error al publicar. ¿Algunas ideas? ¡Gracias!
Eso es probablemente algo que cambió desde que se publicó la respuesta, pero cuando lo hago como propuse aquí (descartar la definición de la función) me sale otro error: "No hay función de lector para el objeto de etiqueta". ¿Tienes una idea de por qué esto podría pasar? – Timur