RMI exportObject(Удаленный объект, ПОРТ); создатьРеестр(ПОРТ);

Мне интересно, могут ли оба

UnicastRemoteObject.exportObject(Remote,portNo) & LocateRegistry.createRegistry(portNo);

порно быть одинаковым?

Я тестирую, это работает, но я беспокоюсь, есть ли какие-либо осложнения?

Почему для работы exportObject необходимо указать объект? когда я использую exportObject(Remote obj), он выдает NullPointerException.


person seesee    schedule 12.08.2011    source источник


Ответы (1)


Мне интересно, могут ли оба

UnicastRemoteObject.exportObject(Remote,portNo) &
LocateRegistry.createRegistry(portNo);

порт не будет одинаковым?

Да, если только вы не используете неравные фабрики сокетов, а это не так. Если есть проблема, будет выброшено исключение.

Я тестирую, это работает, но я беспокоюсь, есть ли какие-либо осложнения?

Вовсе нет, на самом деле это хорошая идея, экономит на прослушивании портов. Вы можете использовать Registry.REGISTRY_PORT, который зарезервирован в IANA, и поэтому также следует отключать любые споры с сетевыми администраторами.

Почему для работы exportObject необходимо указывать объект?

Потому что это статический метод.

когда я использую exportObject(Remote obj), он выдает исключение StubNotFoundException.

Потому что вы не создали заглушку. Если вы используете >= 1.5, вам не нужна сгенерированная заглушка, но вам нужно указать номер порта. Если вы укажете ноль, вы получите номер порта, выделенный системой, но если вы уже экспортировали удаленный объект, в данном случае реестр, вы будете совместно использовать его порт, опять же, если вы не используете неодинаковые фабрики сокетов.

person user207421    schedule 13.08.2011
comment
хотите определить неравные фабрики сокетов? Извините, что-то новое с этой розеткой и RMI. Я использую 1.6, я получаю исключение NullPointException. - person seesee; 13.08.2011
comment
@seesee NullPointerException означает, что что-то не было инициализировано. Я бы предложил отладить этот код и попытаться выяснить, какая переменная осталась неинициализированной. - person Nathan Moos; 13.08.2011
comment
@seesee неравные фабрики сокетов - это фабрики сокетов, для которых sf1.equals(sf2) возвращает false, как и везде в Java. - person user207421; 13.08.2011