情報を生成して画面に出力する Java アプリケーションがあります。問題は、この情報を取得して別の Java アプリケーションに転送することです。このアプリケーションには独自のメインがあります。一般的すぎるように思えますが、このケーススタディをより適切に説明する方法がわからない
5 に答える
あなたの質問は一般的なものですが、ここにいくつかの指針があります(最も低レベルから最も包括的なものまで):
コンソールのパイプ出力:
$ java -jar first-app.jar | java -jar second-app.jar
このシナリオでは、 からのすべてのコンソール出力
first-app
が の標準入力にリダイレクトされますsecond-app
。これには、両方のアプリケーションが同じマシンで動作する必要があります。以下のすべてのソリューションでは、プロデューサーとコンシューマーをネットワーク全体に分散できます。ソケット- Java はそれらをネイティブかつ適切にサポートします
- rmi - rpcのようなバイナリ プロトコルを介した Java 間通信の事実上の標準
- web-services - http、soap、または残りのxmlベースのプロトコル
- jms -いわゆるメッセージ ブローカーを介して非同期的にメッセージを送信する
- 共有データベース/ファイル/メモリ、例: hazelcastを使用
filesを使用して、必要なデータをファイルに保持し、他のアプリケーションがそのデータをファイルから読み取ることができます。これは最も簡単な解決策です。より複雑なシナリオでは、ソケットを使用できます
ソケットを使用してそれを行うことができます (これは、2 つのプロセスが相互に通信できる方法の 1 つです)。ここでサンプルを見つけることができます: http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
IPC を探しているように思えます。プロセス間通信。
他にもオプションがありますが、Java RMI (リモート メソッド呼び出し) で実行でき、低レベルのソケット実装が隠されています: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136424.html
2 番目のプログラムのソースがある場合は、最初のプログラムの出力を 2 番目のプログラムにリダイレクトするだけです: http://en.wikipedia.org/wiki/Redirection_(computing)