clojure/ring/jetty:我正在使用 > lein 环服务器。如何配置实例化的jetty实例?

2024-01-04

当我直接调用码头处理程序时,我能够传入一个配置器,如下所示:

(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)))}))

我必须这样做,因为我在发帖时不断收到 FULL HEAD 错误。现在我重构了直接使用> leinring服务器的东西,它从命令行调用。

> lein ring server

这使用了我的project.clj中指定的一些配置:

:ring {:handler caribou.api.core/app
       :servlet-name "caribou-api"
       :init caribou.api.core/init
       :port 33443}

这很好用,但现在我又遇到了全头问题。所以我尝试在其中添加一个配置器:

: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 HEAD 错误。有任何想法吗?谢谢!


里面写的东西defproject默认情况下不评估表单,但您可以使用~(取消引用)在defproject当您需要它时:

(defproject foo "1.2.3"
  ...
  :some-fn-key ~(fn [& args] ...))

在这种特殊情况下,您可以取消引用fn定义配置器函数的形式(如果不取消引用,则将其用作包含一堆符号的列表,而不是编译成函数)。

或者,您可以在外部定义配置器defproject表格并在里面引用它的名称defproject就像你的第二种方法一样,但是你需要取消引用里面的名称defproject-- 否则它将被视为一个符号。注意。在后一种情况下不会产生异常,因为符号实际上是可调用的并接受任意参数(但只返回nil当用地图或集合以外的东西调用时;对于地图或集合,他们在自己的论点中查找自己)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

clojure/ring/jetty:我正在使用 > lein 环服务器。如何配置实例化的jetty实例? 的相关文章

  • 配置 Jersey + Jetty + JSP

    我如何配置该项目以便它能够呈现 JSP 文件 我希望以 rest 开头的 URL 路由到球衣资源 并让 URLS 提供 JSP 文件 我这个项目中没有任何 web xml 项目文件夹 src main java Main java reso
  • 我从 clojure 和 python 中得到的 hmac 签名略有不同

    我从 python 实现和 clojure 实现中获得的 HMAC SHA1 签名略有不同 我很困惑什么会导致这种情况 Python实现 import hashlib import hmac print hmac new my key my
  • 嵌入式 Jetty 无法识别 Spring MVC Security

    我正在开发一个启动嵌入式 Jetty 服务器的 Spring 应用程序 然后 它将 Spring MVC Web 应用程序 部署 到该 Jetty 服务器 多个控制器都运行良好 但我无法将 Spring Security 添加到 Web 应
  • 如何应用Clojure? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习 Clojure 我真的很喜欢它的一些功能 是时候考虑一 些真正的 宠物项目 了 我意识到我不知道如何真正做到这一点use克
  • 如何在 Jetty Web 服务器中部署 JSP 文件?

    我创建了一个简单的 JSP 文件 我想将其部署在 Jetty 7 2 中 Jetty 正在运行 我可以看到默认网页 http localhost 8080 我用 Jetty 启动java jar start jar命令 我保存了简单的 JS
  • 适用于具有不同数量数据字段的用户的功能

    这个问题是我练习的时候产生的教程中的观察者主题 http mishadoff com blog clojure design patterns episode 10 observer我试图将该功能应用于用户 但无法使用用户的数据字段 例如姓
  • 是否有一个 clojure 函数可以“连接”两个地图列表?

    我正在寻找一个类似于sql中的join的连接函数 例如 这是两个地图列表 def a user id 1 name user 1 user id 2 name user 2 def b user id 2 email e 2 user id
  • 将向量作为绑定传递给 for 宏时出现问题

    我有任意数量的列表 我想使用 for 宏来处理它们 我想创建一个传递向量作为绑定的函数 因为列表的数量各不相同 如果我对绑定进行硬编码 它会按我的预期工作 gt def list1 pink green gt def list2 dog c
  • 在 Clojure 中退出 Recur 循环

    我想跳出下面的循环 并在第 10 行计算结果为 true 时返回最佳最小移动 我查看了 print 语句的输出 当第 10 行的计算结果为 true 时 它 找到了我正在查找的数据 但仍然重复出现 在 Clojure 中 有没有办法在语句计
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • Scala - Java = ? (或者 Clojure - Java = ?)

    开发人员可以在不懂 Java 的情况下使用 Scala 吗 开发人员可以在不懂 Java 的情况下使用 Clojure 吗 注意 例如 我是一名 C 开发人员 我在不了解任何 VB 的情况下使用 NET 当然 WF 4 0 使用 VB 进行
  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • 如何在 Clojure 中链接 Promise

    在 Scala 中 您可以使用map and flatMap在未来的成功结果上运行函数 val x Future Int val y Future String x map toString 有没有比以下更好的 Clojure 类似物 de
  • 为什么我收到无法动态绑定非动态变量?

    我正在尝试使用 clojure tools trace 命名空间的 dotrace 函数 dotrace my function my function 5 但我收到了这个错误 IllegalStateException 无法动态绑定非动态
  • 如何忽略子模块中的 Maven 配置文件?

    我想运行简单的流程 我有 6 个配置文件 生成架构 解压战争 运行码头 测试 停止码头 启动停止应用程序 当我在 mvn 目标 属性中声明它时 测试配置文件将在不同的子模块上运行 clean activate profiles 生成架构 u
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • 如何从 lift webapp 读取文件

    我想在我的 lift 应用程序中读取 xml 文件 val data XML load new java io InputStreamReader new java io FileInputStream 文件名 编码 然而 我得到java
  • 你能在 Clojure 中获取加载函数的“代码即数据”吗?

    换一种方式 好吧 代码就是数据 http groups google com group clojure browse thread thread 554cdc59d8a46f01 该线程解决了如何从源文件中读取的问题 但我想知道如何将已加
  • 有没有好的 Clojure 基准测试?

    Edit Clojure 基准测试已达到基准游戏 http benchmarksgame alioth debian org u64q clojure html 我已经制作了这个问题社区维基并邀请其他人保持更新 有人知道 Clojure 性
  • Clojure 中没有整数溢出?

    我在阅读时在 IntelliJ IDEA 中运行 Clojure 1 3 0 和 La ClojureClojure 的乐趣 在第 4 1 3 节 第 64 页 中 作者使用以下代码演示了整数溢出 Integer MAX VALUE Int

随机推荐