2

私は Java RMI の初心者であり、同じピアの複数のインスタンスが同じマシン上にある可能性があるアプリケーションのようなピア 2 ピア ビット トレントを作成しようとしています。これは、同じマシンに同じタイプのリモート オブジェクトを複数登録できる必要があることを意味します。RMI レジストリは、参照を返す必要があるオブジェクトを区別できないため、どのマシンでもリモート オブジェクトの実装を 1 つだけ許可するようです。他のピアがリモート オブジェクトを公開していることがわかっている IP とポートを指定するなど、レジストリをバイパスする方法はありますか? そうでない場合、同じマシンで同じオブジェクトの複数のインスタンスを作成する方法を教えてください。これについての助けをいただければ幸いです...

4

2 に答える 2

3

異なるポートで複数のrmiレジストリを開始するか、オブジェクトのインスタンスを異なる名前で複数回バインドすることをお勧めします。ただし、最善の方法は、コードでロジックを実行し、必要になるたびに新しいリモートオブジェクトを返すことです。たとえば、パラメータに依存します:

public MyRemoteObject connect(String name) throws java.rmi.RemoteException {
    if("first".equals(name)){
         return firstinstance;
    }else if("new".equals(name)){
         return new MyRemoteObject();
    }
    ...
}

またはこのようなもの...

于 2011-06-17T14:07:41.557 に答える
1

RMIについては忘れることをお勧めします-私見では、この手法はユースケースには適用できません。

シリアライゼーションおよびデシリアライゼーション ロジックを含むネットワーク プロトコルを自分で定義し、これを raw ソケット接続でのデータの送受信に使用します。

于 2011-06-17T14:11:25.657 に答える