Знам, че RMI не успява да направи връзка извън LAN. Искам да знам дали RMI IIOP може да свързва сървърен клиент през интернет. Възможно ли е ? Ако да, какви са възможните решения?
Java RMI IIOP работи ли през интернет?
Отговори (3)
RMI работи добре в интернет, базиран е на TCP. Аз лично бих използвал KryoNet като реализация на RMI. Това е безпроблемно и изключително бързо. Механизмът за сериализация използва Kryo, която е една от най-бързите библиотеки за сериализация с общо предназначение. Имайте предвид, че може да има проблеми със защитните стени. Въпреки това, можете лесно да имате RMI сървър, който слуша на порт 80. Това ще работи добре (освен ако няма тежко проследяване на пакети, предполагам). RMI сървър, който работи през HTTP, също е интересен. Ммм .
Да, но само ако портовете са отворени на защитната стена. Предимството на използването на HTTP вместо RMI е, че може лесно да бъде предадено през прокси сървъри.
Няма особено предимство при използването на IIOP пред родния RMI протокол JRMP, що се отнася до използването в целия Интернет.
IIOP прави ви дава възможността да извиквате своите Java обекти с помощта на не-Java базиран код, така че ако искате да поддържате не-Java клиенти, ще искате да помислите за IIOP или нещо повече браузър / Удобен за JavaScript като SOAP или XMLRPC.
Ако не е необходимо да поддържате клиенти, които не са Java, няма какво да препоръчате IIOP. С IIOP вие губите разпределеното събиране на отпадъци, което предоставя JRMP, така че ще трябва да решите кога някой публикуван от RMI обект вече не трябва да бъде публикуван.
С JRMP всичко, което трябва да се притеснявате за ръчното управление, са RMI обектите, които свързвате с RMI регистъра. Всички други обекти, които публикувате, ще бъдат автоматично събрани за боклук, след като всички препратки към тях (както локални, така и отдалечени) бъдат премахнати. Ако използвате IIOP, ще трябва ръчно да извикате PortableRemoteObject.unexportObject(), когато дойде време да ги извадите от употреба.