2011-07-27 18 views
3

私は2つの異なるJavaアプリケーションを実行していて、どちらも異なるJVMを実行しています。 実際に私はこれらのアプリケーション間でいくつかのデータを渡す必要があります 私はすでにここで共有ファイルのアプローチを使用していますが、より良いアプローチを探しています。複数のJavaアプリケーションを同じVMで実行できますか?

私は、どういうわけかこれらのアプリケーションを同じJVMで実行できれば、これらのアプリケーション間でデータを渡すことができると考えています。 同じJVMで実行されているアプリケーション間でデータを渡す方法がわかりません。

+0

2つのアプリケーションを実行するように設計された場合独自のJVMの下で、それらを単一のものに詰め込むことは、多くの種類の問題に遭遇する可能性があります。 RMIやソケットはどうですか? – Dmitri

答えて

3

2つのアプリケーション間のデータ転送の技術はJavaのRMIであり、私はそれを使うべきだと思います。あなたがSocketを介して相互にアプリの連絡先を実装することができますIntroduction to Java RMI

0

あなたのアプリに固有の矛盾(互換性のないJVMパラメータ、矛盾しているシングルトンなど)がない場合、おそらく実行可能です。 main()メソッドを何らかの方法で変更する必要があります。あなたの2つのアプリを自分のスレッドで動かしているかもしれません。

詳細を知ることなく、物事を判断するのは難しいです。

1

アプリケーションサーバーを使用すると効果的です。アプリケーションサーバーは通常、アプリケーションごとにJVMではなく独自のスレッドでアプリケーションを実行します。 同様のソリューションを実現したい場合は、アプリケーションのメインメソッドを特定のスレッドで呼び出すプリミティブサーバーを作成することができます。

これもまた頭痛を与えるかもしれないことに注意してください。たとえば、あるスレッドがアプリケーションを終了する場合、すべてのスレッドはシャットダウンされます。System.exit(0)

2

:ここ

は、このための導入です。

+0

真ですが、彼が単一のJVMの下で実行できる場合は、フットプリントが大幅に節約され、直接メソッド呼び出しが可能になります。 – seand

+0

@seand:彼は現在共有ファイルを使用しているので、ソケットに変換する方がアプリケーションをマージするよりも簡単です。 – Dmitri

関連する問題