2つのJVMを互いに対話させる方法
2023-09-28 21:30:46
質問
次のような状況です。
2つのJVMプロセス(実際には2つの
java
プロセス) がローカルマシン上で動作しています。それらを
ProcessA
と呼ぶことにします。
ProcessB
.
互いに通信(データ交換)させたい(例えば
ProcessA
はメッセージを
ProcessB
にメッセージを送ります。)
現在、私は一時ファイルを書いて、これらのプロセスが定期的にこのファイルをスキャンしてメッセージを取得することで、この問題を回避しています。この解決策はあまりよくないと思います。
私が望むものを達成するためのより良い代替案は何でしょうか?
どのように解決するのですか?
複数のオプションの IPC :
ソケットベース (ベアボーン) ネットワーキング
-
必ずしもハードではない
, でも。
- は、あまりないために冗長かもしれません。
- は、より多くのコードを書くと、より多くのバグの表面を提供するかもしれません。
- のような既存のフレームワークに依存することもできます。 Netty
RMI
- 技術的にはそれもネットワーク通信ですが、それはあなたにとって透明なものです。
本格的なメッセージ パッシング アーキテクチャ
- 通常、RMI またはネットワーク通信のいずれかに基づいて構築されるが、複雑な会話やワークフローをサポートする。
- シンプルなものには重すぎるかもしれません。
- のようなフレームワークでは ActiveMQ または JBoss メッセージング
Java 管理拡張 (JMX)
- のためのものです。 JVMの管理および監視 しかし、もしあるプロセスが他のプロセスにデータを問い合わせたり、アクションのためのリクエストを送ったりしたい場合、それらがあまり複雑でなければ、あなたが望むものを実装するのに役立つかもしれません。
- はまた、RMI (他の可能なプロトコルの中で) 上でも動作します。
- を理解するのはそれほど簡単なことではありません。 を使うのは実はとても簡単です。
ファイル共有・ファイルロック
- 今やっていること
- それは可能だが、処理するための多くの問題がある。
信号
- 他のプロジェクトにシグナルを送ることができます。
- しかし、これはかなり限定的で、翻訳レイヤーを実装する必要があります(それは です。 は可能ですが、本格的なものよりも、おもちゃにするためのかなりクレイジーなアイデアです。
より詳細な情報がなければ、骨太のネットワークベースの IPC アプローチがベストのように思われます。
-
最も拡張性が高い (新しい機能やワークフローを追加するという意味で)。
- 最も軽量 (アプリのメモリフットプリントの観点から)
- 最もシンプル (デザイン的に)
- 最も教育的(IPCの実装方法を学ぶという意味で)である。 (コメントで "ソケットは難しい" と書かれていましたが、本当にそうではなく、取り組むべきものです)
とはいえ、あなたの例(アクションを実行するために他のプロセスを単に要求する)に基づき、JMXはあなたにとって十分である可能性もあります。
関連
-
Javaでよくある構文エラー
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] ArrayListの初期化を1行で行う。
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
javaの非静的メソッドを静的に参照することができない
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
Javaジェネリックを1つの記事で
-
セミコロン期待値エラー解決
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
java 365*1000*60*60*24 計算問題
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。