Работает ли Java RMI IIOP через Интернет?

Я знаю, что RMI не хватает соединения вне локальной сети. Я хочу знать, может ли RMI IIOP подключать сервер-клиент через Интернет. Является ли это возможным ? Если да, то каковы возможные решения?


person nebula    schedule 20.07.2011    source источник


Ответы (3)


RMI отлично работает через Интернет, он основан на TCP. Лично я бы использовал KryoNet в качестве реализации RMI. Это не хлопот, и очень быстро. Механизм сериализации использует Kryo, одну из самых быстрых библиотек сериализации общего назначения. Обратите внимание, что могут быть проблемы с брандмауэрами. Тем не менее, вы могли бы легко иметь сервер RMI, который прослушивает порт 80. Это будет работать нормально (если, я думаю, нет интенсивного отслеживания пакетов). Сервер RMI, работающий через HTTP, тоже интересен. Ммм .

person Chris Dennett    schedule 20.07.2011
comment
Некоторые реализации контейнеров JavaEE предоставляют RMI через HTTP, например WebSphere. - person Yves Martin; 31.08.2012

Да, но только если порты открыты на брандмауэре. Преимущество использования HTTP вместо RMI заключается в том, что его можно легко передать через прокси-серверы.

person Rocky Pulley    schedule 20.07.2011

Нет особого преимущества в использовании IIOP по сравнению с родным протоколом RMI JRMP, если речь идет об использовании в Интернете.

IIOP делает дает вам возможность вызывать ваши объекты Java, используя код, не основанный на Java, поэтому, если вы хотите поддерживать клиентов, отличных от Java, вам следует подумать о IIOP или о чем-то более браузерном/ Дружественный JavaScript, такой как SOAP или XMLRPC.

Если вам не нужна поддержка клиентов, отличных от Java, то вам особо нечего рекомендовать IIOP. С IIOP вы теряете распределенную сборку мусора, которую предоставляет JRMP, поэтому вам придется решать, когда какой-либо опубликованный RMI объект больше не должен публиковаться.

При использовании JRMP все, о чем вам нужно беспокоиться вручную, — это объекты RMI, которые вы привязываете к реестру RMI. Все остальные объекты, которые вы публикуете, будут автоматически удалены сборщиком мусора после удаления всех ссылок на них (как локальных, так и удаленных). Если вы используете IIOP, вам придется вручную вызвать PortableRemoteObject.unexportObject(), когда придет время вывести их из использования.

person jonabbey    schedule 11.08.2011