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