2 つの Java アプリケーションがあります。最初は好きなだけ編集できますが、後で機械語にコンパイルします。2 つ目は編集できませんが、アドオンを作成できます。そのアドオンが最初のアプリケーションと通信できるようにする必要があります。通常は、単純に文字列を相互に送信します。プロセスの入力ストリームと出力ストリームは、私にとってはオプションではありません。tcp ソケット クライアント/サーバーまたはバッファーとして機能するファイルを使用することを考えています。しかし、どちらの方法も私には少し醜いように思えます。誰か私にもっと良いアイデアを提案できますか?
3 に答える
転送するデータの種類によって異なります。
それが文字列のみの場合:number of process = 2
確信がある場合は、stdin
&8stdout
が最善の方法です。Process
usingを作成してProcessBuilder
から、通信するストリームを取得できます。他のプロセスは、System.out
メッセージを転送するだけです。これは、ソケットなどの適切なクローズを処理する必要がないため、ソケットよりも優先されます (失敗してポートが正常にバインド解除されない場合、大きな問題になる可能性があります)。
number of process > 2
とless than
言う場合、10
おそらくソケットを使用して、ソケットを介して通信できます。これはうまくいくはずですが、ソケットを適切に管理するために余分な努力が必要です。
の場合number of process
はLarge
、JMS
使用する必要があります。処理する必要のない多くのことを行います。プロセスの数が少ない場合、タスクが大きすぎます。
したがって、あなたの場合、プロセスが最善の方法です。
転送したいデータがオブジェクトの場合もあります。RMI
プロセス数が少ない場合に使用できます。それ以上の場合は、JMS
再度使用してください。
編集:上記のすべてについて、多くの汚い仕事が関係しています。変化として、何か新しくてエキサイティングなものを見ているなら、akka にアドバイスします。メッセージを使用して相互に通信するアクター ベースのモデルです。
すばらしい点は、アクターが同じ JVM または別の JVM に配置でき (構成が非常に少ない)、あとは akka が処理してくれることです。これを行うよりもクリーンな方法を見たことがありません:)
JMS を使用するにはどうすればよいでしょうか。
必要に応じて、Publish/Sunbscribe または Point-to-Point モデルのいずれかを使用できます。