Articles of clojure

使用Clojure和Ring的HTTPS请求

我正在使用Ring和Compojure开发Clojure Web API。 API需要能够接受基于指定路由的HTTP和HTTPS请求。 例如: 考虑下面的应用程序路线 : (defroutes app-routes (POST "/route-one" {request :request} (processRequet request)) (POST "/route-two" {request :request} (processRequet request))) 我希望route-one只接受HTTP请求,而route-two只接受HTTPS请求。 这可能吗? 我尝试使用以下设置运行docker : (jetty/run-jetty #'app {:join? false :ssl? true :ssl-port 8443 :keystore "./resources/keystore.jks" :key-password "12345678"}) 这使得API能够接受HTTPS请求,但是并没有阻止对相同路由的HTTP请求。 我也尝试禁用HTTP协议,没有运气: (jetty/run-jetty #'app {:port 5000 :join? false :ssl? true :ssl-port 8443 :keystore "./resources/keystore.jks" :key-password "12345678" :http? false}) […]

我可以用nginx使用Clojure吗?

这是我在这里的问题的后续。 我build立了一个家庭服务器(只是我的其他笔记本电脑运行Ubuntu和Nginx),我想服务clojure文件。 我正在寻求帮助,了解这个过程如何工作。 我很抱歉,我很困惑,我想我需要重新开始。 我在问一个新的问题,因为我想使用nginx而不是lein ring server ,正如在这个问题的答案中所build议的那样。 首先,我开始了一个leiningen的项目guestbook ,我跑lein ring server ,我看到“Hello World”在localhost:3000 。 据我所知这与nginx无关! nginx如何进入这个过程? 起初,我试图用nginx创build一个代理服务器,这也是工作,但我不知道如何提供clojure文件与该设置。 这是我在我的nginx.conf文件适应从这个答案 : upstream ring { server 127.0.0.1:3000 fail_timeout=0; } server { root /home/a/guestbook/resources/public; # make site accessible from http://localhost server_name localhost; location / { # first attempt to serve request as file try_files $uri $uri/ @ring; } […]

为什么nginx不能接受来自Apache的1024多个连接

我有一个clojure / jetty服务器(端口8081),并用nginx(端口8080)代理它。 我一直在试图对clojure应用程序进行基准testing,以及nginx的代理angular色。 当我直接对clojure运行testing时,我可能会Connection reset by peer ,每10次运行一次。 一般来说,testing完成,性能是可以接受的。 $ ulimit -n 4096 $ ab -n 20000 -c 2048 -k localhost:8081 … Concurrency Level: 2048 Time taken for tests: 8.713 seconds Complete requests: 20000 Failed requests: 0 Keep-Alive requests: 20000 Total transferred: 15160000 bytes HTML transferred: 11720000 bytes Requests per second: 2295.43 [#/sec] (mean) […]

试图使用Jenkins做“leintesting”“无法加载Logmanager”org.apache.juli.ClassLoaderLogManager“”

我试图与jenkins执行“leintesting”,但我得到以下错误。 但是,如果我运行它在壳(与相同的用户'tomcat6')它的一切都很好,工作。 我将不胜感激任何帮助。 我使用的是Ubuntu,Tomcat6,Jenkins 1.451,Java 1.6.0_22(也是1.7)。 [workspace] $ /bin/sh -xe /tmp/tomcat6-tmp/hudson7048679986651055690.sh + whoami tomcat6 + cd /home/dev-monster/rfz-repository/debtapp/app + lein –version Leiningen 1.6.1.1 on Java 1.6.0_22 Java HotSpot(TM) 64-Bit Server VM + echo "" "" + echo /opt/jenkins/tools/1.6.0_22/jre /opt/jenkins/tools/1.6.0_22/jre + echo /opt/jenkins/tools/1.6.0_22 /opt/jenkins/tools/1.6.0_22 + lein test Could not load Logmanager "org.apache.juli.ClassLoaderLogManager" java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at […]

如何findclojure + jvm 1.8中的内存“泄漏”

我的clojure应用程序在运行java 8的linux系统上显示出奇怪的行为。具体来说,当使用httpkit通过websockets与客户端进行通信时,内存占用显然没有限制 – 取决于系统,进程被操作系统httpkit 。 我研究了jconsole中的内存使用情况,显然,(新) metaspace不断增长。 我设法通过将-XX:MaxMetaspaceSize=128m传递给jar来解决这个问题:在这种情况下,每当它超过128m时,metaspace内存图就会减less,程序不会吃掉所有的内存。 但这是一个解决方法 – 我想了解为什么会发生这种增长,但我不知道如何继续。 在C ++中,我会用valgrind跟踪泄漏,但是由于Java / Clojure是垃圾收集,我不知道要寻找什么。 我不是100%确定它只是httpkit代码部分,但从我的testing看起来像这样 – 这是一个代码摘录,我正在侦听消息,并根据消息发送一个包含一些数据的json对象; coreparams-atom可以预计在任何时候都有大约10个浮点条目。 (httpkit/on-receive channel (fn [data] (let [data-map (json/read-str data) param (first (get data-map "data")) value (second (get data-map "data"))] (case (get data-map "type") ; … "curparams" (let [tosend (json/write-str {:type "curparams" :data (-> @state/coreparams-atom (assoc :timestamp (db/timestamp)) […]

leiningen-win-installer无法运行REPL

我刚刚安装了Leiningen Win v 1.0.0,并试图用JKD 7(和JDK 8)打开REPL,但第一次尝试失败。 原始项目中没有bug追踪器,我想知道社区是否可以提供帮助。 日志: Windows PowerShell版权所有(C)2012 Microsoft Corporation。 版权所有。 PS C:\Users\User> lein repl nREPL server started on port 53308 on host 127.0.0.1 – nrepl://127.0.0.1:53308 REPL-y 0.3.2, nREPL 0.2.0-beta5Exception in thread "nREPL-worker-0" NoSuchMethodError clojure.tools.nrepl.StdOutBuffer.l ength()I clojure.tools.nrepl.middleware.session/session-out/fn–7630 (session.clj:43)NoSuchMethodError clojure.tools.nr epl.StdOutBuffer.length()I clojure.tools.nrepl.middleware.session/session-out/fn–7630 (session.clj:43)java.lang.NoSuch MethodError: clojure.tools.nrepl.StdOutBuffer.length()I at clojure.tools.nrepl.middleware.session$session_out$fn__7630.doInvoke(session.clj:43) at clojure.lang.RestFn.invoke(RestFn.java:460) at clojure.tools.nrepl.middleware.session.proxy$java.io.Writer$ff19274a.write(Unknown Source) at java.io.PrintWriter.write(PrintWriter.java:456) […]

用clojure嗅探/ proc / cpuinfo

(Clojure新手) 在我的linux机器上,slurping /proc/cpuinfo产生一个错误: user=> (slurp "/proc/cpuinfo") java.io.IOException: Invalid argument (NO_SOURCE_FILE:0) 有人知道这是为什么吗? (是/ proc文件系统中的某种二等公民?) 编辑:下面的代码,改编自nakkaya.com,完美地工作: (with-open [rdr (java.io.BufferedReader. (java.io.FileReader. "/proc/cpuinfo"))] (let [seq (line-seq rdr)] (apply print seq))) 我想知道为什么这种差异?

因为java类没有发现exception,所以leiningen不能运行

我最近和今天一样,开始有兴趣学习用clojure编程。 现在安装了最新版本的java jdk并下载了leiningen脚本后,我按照后者的安装说明,特别是http:/www.lispcast.com/clojure-ubuntu 。 现在,在运行lein version并下载相关的jar文件后,程序退出时出现一个关于未find类的错误。 有问题的错误如下: 线程“main”java.lang.ExceptionInInitializerError中的exception 在java.base / java.lang.Class.forName0(本地方法) 在java.base / java.lang.Class.forName(Class.java:375)> 在clojure.lang.RT.classForName(RT.java:2168) 在clojure.lang.RT.classForName(RT.java:2177) 在clojure.lang.RT.loadClassForName(RT.java:2196) 在clojure.lang.RT.load(RT.java:443) 在clojure.lang.RT.load(RT.java:419) 在clojure.core $加载$ fn__5677.invoke(core.clj:5893) 在clojure.core $ load.invokeStatic(core.clj:5892) 在clojure.core $ load.doInvoke(core.clj:5876) 在clojure.lang.RestFn.invoke(RestFn.java:408) 在clojure.core__init.load(未知来源) 在clojure.core__init。(未知来源) 在java.base / java.lang.Class.forName0(本地方法) 在java.base / java.lang.Class.forName(Class.java:375) 在clojure.lang.RT.classForName(RT.java:2168) 在clojure.lang.RT.classForName(RT.java:2177) 在clojure.lang.RT.loadClassForName(RT.java:2196) 在clojure.lang.RT.load(RT.java:443) 在clojure.lang.RT.load(RT.java:419) 在clojure.lang.RT.doInit(RT.java:461) 在clojure.lang.RT。(RT.java:331) 在clojure.main。(main.java:20) 引起:java.lang.ClassNotFoundException:java / sql / Timestamp 在java.base / java.lang.Class.forName0(本地方法) 在java.base / […]

环境variablesCLASSPATH <> Clojure的CLASSPATH。 为什么?

在这里我检查了环境variablesCLASSPATH daniel @ daniel-laptop:〜/ ps / clojure / projects / ring-tutorial $ echo $ CLASSPATH /家庭/丹尼尔/ PS / Clojure的/项目/环教程/ src目录 在这里我检查一下java认为它是什么。 daniel @ daniel-laptop:〜/ ps / clojure / projects / ring-tutorial $ lein repl Clojure 1.1.0 user =>(System / getProperty“java.class.path”) “SRC /:类/:/首页/丹尼尔/ .m2目录/库/ leiningen / leiningen / 1.1.0 / leiningen-1.1.0-standalone.jar:LIB / Clojure的-1.1.0.jar:LIB / servlet的API -2.5-6.1.14.jar:LIB […]

如何在Windows上运行Clojuretesting?

我将Clojure放在C:\ clojure-1.1.0中,并通过以下命令启动REPL:java -cp clojure.jar clojure.main 在\ test \ clojure \ test_clojure中,有一堆testing文件。 如何运行这些? 例如,我试过:java -cp …… \ clojure.jar clojure.main data_structures.clj 它没有工作。