以下程序从 überjar 运行时,仅在使用内存中 Datomic 数据库时才退出;当连接到 Datomic 服务器时,它会无限期挂起而不是退出 JVM:
(ns myns.example
(:use [datomic.api :only [db q] :as d])
(:gen-class))
;; WORKS: (def uri "datomic:mem://testdb")
(def uri "datomic:free://localhost:4334/testdb2")
(defn -main []
(println 1)
(when (d/create-database uri)
(d/connect uri))
(shutdown-agents)
(println 2))
运行为:
lein uberjar && java -cp target/myns-0.1.0-SNAPSHOT-standalone.jar myns.example
输出:
1
2
并挂起。仅当程序启动时数据库不存在时才会挂起。
有谁知道为什么,或者如何解决?这适用于datomic-free-0.8.4020.26
和datomic-free-0.8.3941
。
更新——上述程序确实终止了,但需要很长时间(> 1 分钟)。我想知道为什么。