【发布时间】:2015-12-12 22:49:22
【问题描述】:
我正在编写一个 Java 库,实际上是一个 Clojure 库,但是对于这个问题,重要的是它运行在 JVM 上。这个库需要执行一些 JavaScript。 I tried with Nashorn 但我遇到了一些可能难以克服的限制。作为替代方案,我想尝试 NodeJS。
我希望我的库是自包含的,不依赖于独立运行 NodeJS 的系统,因此需要特定的部署机制将 Java 和 NodeJS 工件放置在正确的位置,以供两个不同的网络服务器获取。但是,这种方法会带来一些问题。
我将通过 HTTP 与 NodeJS 交谈,但我不希望 NodeJS 打开特定端口。我想找到一个随机未使用的,这样就不会发生冲突。我还想控制来自 NodeJS 的日志的去向,以便将它们与我的应用程序的其余部分一起保存。最后,我的应用应该能够检测到 NodeJS 何时崩溃并重新运行它或报告错误信息。
解决这个问题的最佳方法是什么?是否有任何 Java 库可以帮助以这种方式管理子进程?我应该从 NodeJS 方面做任何特别的事情(我对 NodeJS 很陌生,我以前从未使用过它)。
【问题讨论】:
-
我想这取决于您的库打算如何被使用,但是让库启动重量级服务器进程以完成其工作似乎是代码异味。
-
你听说过头像吗?我也遇到了一些问题,我无法使用一些 nodejs 模块,但头像填补了空白:strongloop.com/strongblog/…
-
只是为了缩小答案范围......您到底遇到了什么限制?使用 nashorn 的服务器端脚本增加了 6ms 到 avg。最后你的帖子中的响应时间,所以我猜性能不是其中之一
标签: javascript java node.js clojure subprocess