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