私の質問:ローカルで実行されている 2 つ以上の JVM インスタンス間で通信するには、どのような方法をとればよいですか?
問題の説明:
特定のタスクを互いに完全に分離するために別個の JVM インスタンスを必要とするプロジェクト用のシステムを開発しています。
実行中、「親」JVM は、実行を期待する「子」JVM を作成し、結果を (比較的単純な POJO クラスまたは構造化された XML データの形式で) 返します。これらの結果は、SysErr/SysOut/SysIn パイプを使用して転送されるべきではありません。これは、子が実行の一部としてこれらを既に使用している可能性があるためです。
子 JVM が一定時間内に結果を返さない場合、親 JVM は子プロセスに信号を送って処理を停止するか、子プロセスを強制終了できるようにする必要があります。それ以外の場合、子 JVM はタスクの完了時に正常に終了する必要があります。
これまでの調査:
役立つ可能性のある技術がいくつかあることは承知しています。
- Java の RMI ライブラリを使用する
- ソケットを使用してオブジェクトを転送する
- Cajo、Hessian などの配布ライブラリの使用
...しかし、これらのオプションのいずれかまたは他のオプションを追求する前に、他の人がどのようなアプローチを検討するかを聞くことに興味があります.
これに関する助けやアドバイスをありがとう!
編集:
転送するデータの量 -比較的小さいですが、ほとんどの場合、子の実行結果を表す文字列を含むほんの一握りの POJO になります。大量の情報に対して非効率的な解決策がある場合、これが私のシステムで問題になる可能性はほとんどありません。転送される金額はかなり静的である必要があるため、これはスケーラブルである必要 はありません。
この場合、転送のレイテンシーは重大な問題ではありませんが、結果の「ポーリング」が必要な場合は、大きなオーバーヘッドなしでかなり頻繁に行うことができるため、後でこれに加えて応答性の高い GUI を維持できます (例: プログレス バー)