Java RMI IIOP работи ли през интернет?

Знам, че RMI не успява да направи връзка извън LAN. Искам да знам дали 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