0

Java アプリケーション「A」と別の Java アプリケーション「B」の間の通信を探しています。JNI、Webservices、その他のものから聞いたことがあります...

現在の状態: 私は 2 つの別個の Java アプリケーションを持っています。現時点では、両方を手動で開始でき、それぞれが非常にうまく機能しています。アプリケーションごとに、各関数とすべての副作用をチェックするテストクラスを作成しました...; アプリケーション B はインターフェイスを実装しているので、実行したい各関数 @ B を知っています! 各アプリケーションは、データ交換に同じインターフェースを使用します (将来)。

問題: 今、私はアプリケーション A を開始したいと考えています (それ自体で ~5 スレッドを開始します)。A は、定義されたパスですべての JAR ファイルを検索し、そのうちの 1 つを開始する必要があります (UI @ A による選択)。OK、これは私にとって大きな問題ではありません! 私の問題: ロードされた「JAR ファイル」とやり取りしたい (または、JAR ファイル内のアプリケーションとやり取りしたい)。

質問: 単純なツールやフレームワークを使用しないことで、どのように対話が可能になりますか? Web サービスは十分に動的ではないようです (私は Web サービスの専門家ではありません!)!?

私にとって重要なのは次の点です。

  • 高速通信
  • 外部ライブラリの動的読み込み (eq. 他の Java アプリケーション = B.) が必要です。
  • パッケージ名をインポートするべきではありません (他の開発者にも公開したい)
  • 他の開発者向けにオープン (彼らは私のインターフェースを実装する必要があるだけです)

より具体的に

  • A はコントローラー / サーバー /etc です。バックグラウンドで多かれ少なかれ実行されます
  • B (私のインターフェースの他のすべての実装) はゲームです。Aから起動、Aから制御、Aから停止
4

2 に答える 2

0

私はこのようにしました:

  • 使用する必要があり、提供するすべてのメソッドを使用して、ゲームのインターフェイスを作成します
  • インターフェイスを実装する game.class をコーディングします。

  • ゲーム型の新しいオブジェクトを生成します (Game g = null;)

  • インスタンスを作成する必要がある場合は、次のように記述できます。 g = new Game();
  • 「instanceof」でタイプを確認しました

  • コードはすぐに続きます..

于 2014-04-25T10:43:53.987 に答える
0

すべての説明を読んだ後、別の JVM で「コントローラー」アプリケーションを実行し、シェル コマンドを使用して別の JVM で「ゲーム」を開始することを提案します。

「コントローラ」と「ゲーム」の間でさらに通信が必要な場合、プロセス間通信の最も単純なテクノロジはソケットと Java RMI です。

「コントローラー」と「ゲーム」が同じライブラリーの異なるバージョンを使用していても、同じ JVM 内で共存できるテクノロジーが利用可能です。また、JVM を再起動せずにモジュールを動的にロードおよびアンロードすることもできます。このテクノロジーは OSGi ですが、私の意見では、それを習得するには、シェル、ソケット、Java RMI を使用するよりも急な学習曲線が必要です。

于 2013-08-08T14:27:36.827 に答える