, 정말 같은 피규에 통과 할 수 있었다 :클로저/링/부티 : 링링 서버를 사용하고 있습니다. 인스턴스화되는 부두 인스턴스를 어떻게 구성합니까? 내가 직접 부두 핸들러를 호출 할 때
(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)))}))
내가 게시 할 때 전체 머리의 오류가 계속 때문에이 작업을 수행했다. 이제 커맨드 라인에서 호출되는 링 링 서버를 직접 사용하도록 리팩토링했습니다.
:ring {:handler caribou.api.core/app
:servlet-name "caribou-api"
:init caribou.api.core/init
:port 33443}
이 잘 작동하지만, 지금은 다시 FULL HEAD 문제를 점점 오전 :
> lein ring server
이
내 project.clj에 지정된 일부 구성을 사용합니다. 그래서 나는 거기에 구성자을 추가하려고 ::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})
을 그리고 이것은이 스택 트레이스 실패 :이 같은지도에 직접 기능을 넣어 함께해야 할 일을했을 생각
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)
, 그래서 프로젝트 외부에서 정의 (caribou.api.core에서) 내가 함수의 나머지는 다른 곳에서 정의 할 것처럼 참조 시도 :이 응용 프로그램을 회전
;; 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})
,하지만 난 여전히 413 얻을 : FULL을 머리 게시 할 때 오류가 발생했습니다. 어떤 아이디어? 감사!
아마도 답변이 게시 된 이후에 변경된 내용 일 수 있습니다.하지만 여기에 제안 된 (함수 정의 인용 부호 제외) 경우 "태그 개체에 대한 리더 기능이 없습니다"라는 오류가 발생합니다. 이것이 일어날 수있는 이유가 있습니까? – Timur