小编sip*_*uel的帖子

禁用HikariPool日志记录

这可能是一个非常简单的问题.如何禁用Hikari-CP调试日志?在我的日志文件中,我有很多这些消息

DEBUG [.zaxxer.hikari.pool.HikariPool:] - Before cleanup pool stats HikariPool-0 (total=10, inUse=0, avail=10, waiting=0)
DEBUG [.zaxxer.hikari.pool.HikariPool:] - After cleanup pool stats HikariPool-0 (total=10, inUse=0, avail=10, waiting=0)
Run Code Online (Sandbox Code Playgroud)

在我的log4jConfig.xml中:

<logger name="org.zaxxer.hikari">
    <level value="error"/>
</logger>
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我记录器配置有什么问题吗?

谢谢!

java logging hikaricp

12
推荐指数
1
解决办法
1万
查看次数

关联和解散Clojure记录

为什么会出现在返回类型的差异assocdissocClojure中的,当他们的说法是一个记录?我的意思是assoc"不存在的键仍然会返回一条记录,但是dissoc现有的键会返回一张地图.

但是,从某种意义上说,两者都应该产生地图或记录,但不会表现出不同的行为.这种不同的原因是什么?

clojure

11
推荐指数
2
解决办法
814
查看次数

压缩Undertow服务器响应

我有一个程序化的Undertow服务器设置.静态内容也由Undertow提供,没有反向代理.Undertow启动的Java代码如下所示:

ResourceManager resourceManager = 
    new FileResourceManager(new File("deploymentDir"), 100);

DeploymentInfo servletBuilder = Servlets.deployment()
      .setResourceManager(resourceManager)
      .setDeploymentName("testDeployment")
      .setContextPath("/");

DeploymentManager manager = Servlets.defaultContainer()
      .addDeployment(servletBuilder);
manager.deploy();

Undertow.Builder builder = Undertow.builder();
builder.addHttpListener(8080, domainName);

PathHandler path = Handlers.path(Handlers.redirect("/"))
      .addPrefixPath("/", manager.start());

Undertow server = builder.setHandler(path).build();
server.start();
Run Code Online (Sandbox Code Playgroud)

我想知道一个gzip服务器如何在Undertow中响应?

谢谢,Vitaliy.

java http-compression undertow

6
推荐指数
1
解决办法
2587
查看次数

Clojure的Slurpage和barfage

我正在使用vim-sexpvim-sexp-mappings-for-regular-people插件来编辑Clojure文件.我不太明白什么是slurpbarf命令.

我试着和他们一起玩,似乎他们在相邻表格的开头/结尾插入/删除表格.那是对的吗?如果没有,什么是slurpbarf的正确定义?

vim clojure paredit s-expression

6
推荐指数
1
解决办法
1161
查看次数

Clojure Yesql无法找到查询文件

我正在尝试在我的测试Clojure项目中使用Kris Jenkins的Yesql库.我queries.sql用单个查询创建了一个示例文件.单个core.clj文件看起来像这样(precalc是测试项目的名称):

(ns precalc.core)
(require '[yesql.core :refer [defqueries defquery]])

(println (defqueries "resources/queries.sql"))
(defquery col-type "resources/queries.sql")
(slurp "resources/queries.sql")
Run Code Online (Sandbox Code Playgroud)

当试图评估例如第4行时,我得到了

;!!CompilerException java.io.FileNotFoundException: resources/queries.sql, compiling:(precalc/core.clj:4:10)

我也试过放入queries.sqlroot项目文件夹,但无济于事.虽然啜食有效.我的错误必须非常明显.有人可以帮忙吗?

我使用Leiningen的复制品,Macvim和Tim Pope的vim-fireplace插件,通过cider-nrepl连接.

谢谢!

vim clojure

5
推荐指数
1
解决办法
506
查看次数

浏览eval会导致Vim Fireplace插件

如何在Fireplace中浏览以前的表单评估结果?例如,如果有两种形式

(meta #'str)
(meta #'use)
Run Code Online (Sandbox Code Playgroud)

随后使用cpp命令进行评估,是否有可能在Vim缓冲区或某种quickfix列表中浏览这两个评估的输出?

谢谢!

vim clojure

4
推荐指数
1
解决办法
246
查看次数

如何在Datomic中收回属性?

我在Datomic架构中创建了一组属性.他们的:db/ident分为三个命名空间:: name,:tree,:node.现在我想删除所有这些并重新开始.我找到了所有必需的属性:

(def results 
  (q '[:find ?e 
       :where [?e :db/ident ?v]
              [(namespace ?v) ?res]
              [(contains? #{"task", "node", "tree"} ?res)]
     ] 
     (db conn)))
Run Code Online (Sandbox Code Playgroud)

然后创建了一组retractEntity语句:

(def retract-statements 
  (into [] (map #(vector :db.fn/retractEntity (first %1)) results)))
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试调用该事务:

@(d/transact conn [retract-statements])
Run Code Online (Sandbox Code Playgroud)

它给我:: db.error/invalid-attribute模式更改必须后跟:db.install/attribute或:db.alter/attribute

显然我做错了什么.有人可以帮忙吗?

谢谢!

clojure datomic

4
推荐指数
1
解决办法
1404
查看次数

Clojure宏在运行罐子时很奇怪

下面是一个简单的Clojure应用程序示例lein new mw:

(ns mw.core
  (:gen-class))

(def fs (atom {}))

(defmacro op []
  (swap! fs assoc :macro-f "somevalue"))

(op)

(defn -main [& args]
  (println @fs))
Run Code Online (Sandbox Code Playgroud)

project.clj我有

:profiles {:uberjar {:aot [mw.core]}}
:main mw.core
Run Code Online (Sandbox Code Playgroud)

在REPL中运行时,评估@fs返回值{:macro-f somevalue}.但是,运行一个uberjar收益率{}.如果我改为op定义defn而不是defmacro,那么fs当从uberjar运行时再次有适当的内容.这是为什么?

我隐约意识到这与AOT编译有关,并且宏编译在编译阶段之前发生,但显然我对这些事情的理解是缺乏的.

我在尝试部署使用非常好的mixfix库的应用程序时遇到了这个问题,其中mixfix运算符是使用全局原子定义的.我花了很长时间才将问题与上面提到的例子隔离开来.

任何帮助将不胜感激.

谢谢!

macros clojure uberjar leiningen

4
推荐指数
1
解决办法
167
查看次数

在Undertow中启用HTTPS

我们有一个有效的Apache mod_ssl配置.我想为Undertow启用HTTPS支持,以便它同时监听http和https,从而避免了对Apache的需求.

我查看了Undertow的javadocs.Undertow.Builder类有两个带有以下签名的addHttpsListener方法:

   public Builder addHttpsListener(int port, String host, 
       KeyManager[] keyManagers, TrustManager[] trustManagers);
   public Builder addHttpsListener(int port, String host,
       SSLContext sslContext) {
Run Code Online (Sandbox Code Playgroud)

所以我似乎可以在使用Builder API引导Undertow时使用这些,例如

Undertow server = Undertow.builder()
                    .addHttpsListener(8443, "localhost", sslContext)
                    .build();
Run Code Online (Sandbox Code Playgroud)

我不确定如何创建SSLContext变量,或者如何配置KeyManagers和TrustManagers.拥有mod_ssl正在使用的证书文件,如何继续为Undertow启用HTTPS?

更新:

根据hwellmann的回答,我重用了SslContextFactory.createSslContext()方法.在此之前,我必须将我的公钥/私钥对转换为PKCS12格式并将其导入Java密钥库.

提供SSL转换转换/导入命令(取自此处此处),希望这对任何人都有用:

# Convert to PKCS12    
$ openssl pkcs12 -export -out output_cert.pfx -inkey input_cert.key -in input_cert.crt -certfile intermediate.crt

# Import into Java keystore
$ keytool -v -importkeystore -srckeystore output_cert.pfx -srcstoretype PKCS12 -destkeystore output_store.jks -deststoretype JKS
Run Code Online (Sandbox Code Playgroud)

java ssl https keystore undertow

3
推荐指数
1
解决办法
6476
查看次数

Clojure Ring/Compojure REPL中的动态处理程序更新

我使用了一个新的Compojure Leiningen项目lein new compojure test.Web服务器由lein repl然后运行

user=> (use 'ring.adapter.jetty)
user=> (run-jetty test.handler/app {:port 3000})
Run Code Online (Sandbox Code Playgroud)

路由和应用程序处理程序规范是微不足道的:

(defroutes app-routes
  (GET "/*.do" [] "Dynamic page")
  (route/not-found "Not Found"))

(def app
  (wrap-defaults app-routes site-defaults))
Run Code Online (Sandbox Code Playgroud)

现在,在更改app-routes定义中的任何内容后(例如,将"动态页面"文本更改为其他任何内容,或修改URI匹配字符串),我不会在浏览器中获得更新的文本/路由.但是,当app-routes稍微改变定义时

(defn dynfn [] "Dynamic page fn")
(defroutes app-routes
  (GET "/*.do" [] (dynfn))
  (route/not-found "Not Found"))
Run Code Online (Sandbox Code Playgroud)

我在更改返回值时会获得动态更新dynfn.另外,遵循本文的建议并将app定义修改为

(def app
  (wrap-defaults #'app-routes site-defaults))
Run Code Online (Sandbox Code Playgroud)

(注意#'透明地创建一个var app-routes)也有帮助!

为什么会这样?有没有其他方式可以获得真正的动态行为defroutes

谢谢!

clojure compojure ring read-eval-print-loop

3
推荐指数
1
解决办法
681
查看次数