繁体   English   中英

来自 Java 的多个 Clojure 实例?

[英]Multiple Clojure instances from Java?

我正在尝试创建一种可以编译为 Clojure 的脚本语言,然后在 JVM 上运行它。 每个单独的脚本,在同一个 JVM 实例中,但以独立的方式。

然而,当我看到实现时,我看到 Clojure 环境(命名空间等)是全局的,因此一个脚本可能对命名空间进行的任何更改都会影响后续脚本。

我想知道是否有一种方法可以在一个 JVM 中拥有多个临时的、隔离的 Clojure 环境实例。 如果没有,我可以使用哪种策略来避免污染全局命名空间并可能导致 memory 泄漏。

如果您想以隔离的方式运行脚本,建议为每个脚本使用单独的类加载器 - 无论它是 clojure 还是任何其他类型的沙盒代码。

这将允许有相同命名空间(即包)的多个实现。

我不确定 Clojure 类加载器是否能很好地配合这个,所以需要一些实验。

您还需要在启用 SecurityManager 的情况下运行并定义策略,以防止沙盒代码访问文件系统、正在运行的进程、打开服务器 sockets 等内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM