Adrian N.

Adrian N. Informatyk

Temat: Java RMI callbacki

Witam,

Od jakiegoś czasu odkładam rozwiązanie problemu z RMI.

Mam jeden serwer nasłuchującego po RMI. Do niego podłącza się kilka osob clientami. Komunikacja zachodzi od klienta do serwera. Tutaj w każdym przypadku jest OK. Problem pojawia się gdy serwer ma wysłać callbacka do klienta.

Po nawiązaniu połączenia RMI z serwerem przekazuje do niego obiekt klienta implementujący Remote.

Wszystko działa OK tylko gdy serwer znajduje się w ramach tej samej podsieci (lub posiada jawnie wskazaną trasę do klienta // w systemie //).
Schody zaczynają się gdy klient wyjdzie poza wspólną sieć i dodatkowo posiada adres IP NATowany // wewnętrzny //


Przy wywołaniu callbacka serwer zrzuca wyjątek:
http://wklej.org/id/399486/

Teraz moim zdaniem należy po prostu zmienic adres endpoint - który pokazuje wewnętrzny adres klienta (do ktorego oczywiście serwer nie posiada trasy) - powinien wyświetlać adres IP routera.

Koledzy, pytanie do was - w jaki sposób zmienic ten adres :)

Z góry dzięki za sugestie!

pozdrawiam,
Adrian

konto usunięte

Temat: Java RMI callbacki

Sprobuj ustawic zmienna systemowa w parametrze uruchamiania aplikacji:

-Djava.rmi.server.hostname=adres.ip.serwera
Adrian N.

Adrian N. Informatyk

Temat: Java RMI callbacki

Witam,

Super, chodziło o podanie adresu zewnętrznego klienta.
Można zrobić to oczywiście z poziomu System.getProperties().

Tylko na ile jest to eleganckie rozwiązanie - co z klientami którzy posiadają chociażby zmienne IP?

Do serwera przekazuje obiekt który dziedziczy po UnicastRemoteObject,
w jaki sposób mogę po jego stronie zmienić port lub adres IP samej ramki TCP ?

Chodzi o to, że nie zawsze adres IP będzie stały, czy port który definiuje w konstruktorze klasy UnicastRemoteObject(Object obj, int port) zawsze będzie tym, który dotrze do serwera (NAT losuje sobie port). Serwer próboje odpowiedzieć na port ustawiony w obiekcie - a nie rzeczywisty z którego pochodzi wiadomości // w sensie warstwa transportowa //.

konto usunięte

Temat: Java RMI callbacki

Hm,

Mozna by sprobowac skorzystac z metod, ktore umozliwiaja pobranie listy adresow ip skojarzonych z maszyna. Nie pamietam dokladnie, ktore to byly klasy i nie mam pewnosci czy to rozwiaze problem ;)Łukasz Grabski edytował(a) ten post dnia 11.10.10 o godzinie 11:08
Aleksander Lech

Aleksander Lech Architekt rozwiązań

Temat: Java RMI callbacki

Miałem podobny problem z RMI kiedyś. Rozwiązałem go poprzez ustawienie w JBossie bindingu na zewnętrzną domenę przy czym w /etc/hosts ustawilem żeby ów domena była mapowana na 127.0.0.1 i tak jest ok.

Następna dyskusja:

Java.RMI - problem z rmic....




Wyślij zaproszenie do