Связь между локальными JVM

Мой вопрос: Какой подход я могу / должен использовать для связи между двумя или более экземплярами JVM, которые работают локально?

Некоторое описание проблемы:
Я разрабатываю систему для проекта, который требует отдельных экземпляров JVM для полной изоляции определенных задач друг от друга.

В процессе работы «родительская» JVM будет создавать «дочерние» JVM, которые она будет ожидать выполнения и затем вернуть ему результаты (в формате относительно простых классов POJO или, возможно, структурированных данных XML). Эти результаты не следует передавать с помощью каналов SysErr / SysOut / SysIn, поскольку дочерний элемент может уже использовать их как часть своей работы.

Если дочерняя JVM не отвечает результатами в течение определенного времени, родительская JVM должна иметь возможность сигнализировать дочернему элементу о прекращении обработки или уничтожении дочернего процесса. В противном случае дочерняя JVM должна нормально завершиться в конце выполнения своей задачи.

Исследования на данный момент:
Я знаю, что существует ряд технологий, которые могут быть полезны, например ...

  • Использование Java RMI библиотека
  • Использование сокетов для передачи объектов
  • Использование распределительных библиотек, таких как Cajo, Hessian

... но мне интересно услышать, какие подходы могут рассмотреть другие, прежде чем использовать один из этих вариантов или любые другие.

Спасибо за любую помощь или совет по этому поводу!

Редакции:
Количество данных для передачи - относительно небольшое, в основном это будет всего лишь несколько POJO, содержащих строки, которые будут представлять результат выполнения дочернего объекта. Если какое-либо решение будет неэффективным для больших объемов информации, вряд ли будет проблемой в моей системе. Передаваемая сумма должна быть довольно статичной, поэтому не должен быть масштабируемым.

Задержка передачи - не является критической проблемой в этом случае, хотя, если требуется какой-либо «опрос» результатов, он должен быть достаточно частым без значительных накладных расходов, поэтому я могу поддерживать гибкий графический интерфейс поверх это позже (например, индикатор выполнения)

25
задан obfuscation 19 February 2011 в 17:46
поделиться