Khi tôi gọi handler cầu cảng trực tiếp, tôi đã có thể vượt qua trong một cấu hình như vậy:clojure/ring/jetty: Tôi đang sử dụng> máy chủ vòng lein. Làm thế nào để cấu hình thể hiện cầu nối được khởi tạo?
(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)))}))
tôi phải làm điều này vì tôi giữ lấy một lỗi ĐẦU ĐẦY ĐỦ khi đăng. Bây giờ tôi đã tái cấu trúc mọi thứ để sử dụng> máy chủ vòng lein trực tiếp, được gọi từ dòng lệnh.
> lein ring server
này sử dụng một số cấu hình quy định tại project.clj tôi:
:ring {:handler caribou.api.core/app
:servlet-name "caribou-api"
:init caribou.api.core/init
:port 33443}
này hoạt động tuyệt vời, nhưng bây giờ tôi nhận được vấn đề ĐẦU ĐẦY ĐỦ một lần nữa. Vì vậy, tôi cố gắng thêm một cấu hình trong đó:
: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})
Và điều này không thành công với stacktrace này:
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)
I figured này đã phải làm với việc đưa chức năng trực tiếp trong bản đồ như thế, vì vậy tôi định nghĩa nó ngoài dự án (trong caribou.api.core) và cố gắng đề cập đến nó như tôi làm phần còn lại của các chức năng được xác định ở nơi khác:
;; 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})
này quay lên ứng dụng, nhưng tôi vẫn nhận được 413: đẦY ĐỦ CÁI ĐẦU lỗi khi đăng. Bất kỳ ý tưởng? Cảm ơn!
Đó có thể là điều đã thay đổi kể từ khi câu trả lời được đăng, nhưng khi tôi làm như đề xuất ở đây (unquote định nghĩa hàm) tôi nhận được một lỗi khác: "Không có chức năng đọc cho đối tượng thẻ". Bạn có một ý tưởng tại sao điều này có thể xảy ra? – Timur