我的问题:我可以/应该采取什么方法在本地运行的两个或多个 JVM 实例之间进行通信?
问题的一些描述:
我正在为一个项目开发一个系统,该项目需要单独的 JVM 实例来完全隔离某些任务。
在它运行时,“父”JVM 将创建它期望执行的“子”JVM,然后将结果返回给它(以相对简单的 POJO 类的格式,或者可能是结构化的 XML 数据)。这些结果不应该使用 SysErr/SysOut/SysIn 管道传输,因为子进程可能已经使用这些作为其运行的一部分。
如果子 JVM 在一定时间内没有响应结果,则父 JVM 应该能够向子 JVM 发出信号以停止处理或终止子进程。否则,子 JVM 应该在完成其任务结束时正常退出。
迄今为止的研究:
我知道有许多技术可能有用,例如...
- 使用 Java 的 RMI 库
- 使用套接字传输对象
- 使用分发库,例如 Cajo、Hessian
...但我很想听听其他人在追求这些选择之一或任何其他选择之前可能会考虑什么方法。
感谢您对此提供任何帮助或建议!
编辑:
要传输的数据量 -相对较小,主要是少数 POJO,其中包含表示子执行结果的字符串。如果任何解决方案在大量信息上效率低下,这不太可能是我的系统中的问题。转移的金额应该是相当静态的,因此不必是可扩展的。
传输延迟——在这种情况下不是一个关键问题,尽管如果需要对结果进行任何“轮询”,这应该能够相当频繁地进行,而不会产生大量开销,因此我可以在以后在此之上维护一个响应式 GUI(例如进度条)