我正在编写一个Java库,实际上是一个Clojure库,但对于这个问题来说,重要的是它在JVM上运行。该库需要执行一些JavaScript。我尝试使用Nashorn,但遇到了一些难以克服的限制。作为替代方案,我想尝试NodeJS。
我希望我的库是独立自包含的,不依赖于独立运行NodeJS的系统,因此需要特定的部署机制将Java和NodeJS工件放置在正确的位置,以被两个不同的网络服务器接收。然而,这种方法会带来一些问题。
我将通过HTTP与NodeJS通信,但我不希望NodeJS打开特定的端口。我想找到随机未使用的端口,以避免冲突。我还想控制NodeJS日志的存储位置,以便将其与应用程序的其他部分保持在一起。最后,我的应用程序应该能够检测到NodeJS崩溃并重新运行它或报告带有信息的错误。
如何最好地解决这个问题?是否有任何Java库可以帮助以这种方式管理子进程?从NodeJS方面有什么特别的事情要做(我以前从未使用过它)?