0

これは、2つのJVMが相互に通信することではなく、既存の実行中のJVMを「結合」して、追加のプロセスの作成を防ぐことです。

データ収集コンポーネント、GUIオペレーター・インターフェース、およびデータ・ロギング・コンポーネント(Java)を備えた制御システムを展開しています。

データロギングコンポーネントとGUIはどちらも、データ収集コンポーネントを利用します。通常は問題はありません。どちらも同じVMに存在し、イベントまたはオブザーバーパターンを介して更新を取得できます。問題は、マシンの起動時にデータロガーを実行する必要があることです(Linux)が、GUIはユーザーがログインしたときにのみ実行されます。データ収集コンポーネントの2つのインスタンスが作成されると(つまり、2つのJVMで)、通信に問題が発生します。この質問の範囲を超えている監視ですが、データ収集コンポーネントの1つのインスタンスのみを実行できるという要件があるとしましょう。

実行中の既存のVMでクラスをインスタンス化する方法はありますか?このクラスオブジェクトは、VM内のライブオブジェクトと対話できますか?私がやりたいのは、データロガーをデーモンとして実行し、1つのJVMを作成し、ユーザーがosにログオンしたときに、実行中のVMでGUIクラスをインスタンス化することです。

4

1 に答える 1

1

実行中の既存のVMでクラスをインスタンス化する方法はありますか?

RMI、JMS、JMX、ソケット、データグラム。

このクラスオブジェクトは、VM内のライブオブジェクトと対話できますか?

はい。

私がやりたいのは、データロガーをデーモンとして実行し、1つのJVMを作成し、ユーザーがosにログオンしたときに、実行中のVMでGUIクラスをインスタンス化することです。

OSは、ユーザーがログインしたときにプロセスが実行されていない限り、これを実行できない場合があります。つまり、あるユーザーが別のユーザーが使用する画面にGUIを表示することはできません。OSで許可されていれば、問題はありません。

もちろん、通常は2つのJVMを実行し、一方が他方と通信して(セキュリティの問題を解決します)、JVMが1つしかないことにはほとんど利点がありません。

于 2012-11-21T17:41:03.997 に答える