Java RMI без RMI Registry - PullRequest
       33

Java RMI без RMI Registry

2 голосов
/ 17 июня 2011

Я довольно новичок в Java RMI и пытаюсь создать одноранговое торрент-подобное приложение Peer 2 Peer, в котором несколько экземпляров одного и того же узла могут быть на одной машине.Это означало бы, что мне нужно иметь возможность иметь более одного удаленного объекта одного типа, зарегистрированного на одной машине.Реестр RMI, кажется, позволяет мне иметь только одну реализацию Удаленного объекта на любом компьютере, поскольку реестр не сможет различить, на какой объект он должен ссылаться.Есть ли способ обойти реестр, например, указав IP-адрес и порт, где я знаю, что другой узел выставляет свой удаленный объект?Если нет, у вас есть какие-либо идеи, как я мог бы создать несколько экземпляров одного и того же объекта на одном компьютере?Любая помощь с этим будет принята с благодарностью ...

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

Вы можете запустить несколько реестров rmi на разных портах или лучше связать экземпляры объекта под разными именами несколько раз. Но лучший способ, вероятно, состоит в том, чтобы выполнить логику в вашем коде и возвращать новый удаленный объект каждый раз, когда это необходимо. Например. зависит от параметра:

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

или как-то так ...

1 голос
/ 17 июня 2011

Я бы посоветовал вам забыть о RMI - ИМХО этот метод не применим для вашего случая использования.

Определите себе сетевой протокол, включающий логику сериализации и десериализации, и используйте его для отправки и получения данных по необработанному сокетному соединению.

...