Czy za pomocą serwletów mogę osiągnąć...

0

Na wstępie wyznam, że nie mam większego pojęcia o tym, czym są i jak działają serwlety. Wiem tylko tyle, że są to aplikacje Javy odpalane na serwerze internetowym. Zanim wgłębię się w temat, chciałbym się najpierw dowiedzieć, czy będzie to miało sens.

W programie wykorzystującym system RMI chciałbym umożliwić łączenie się komputerów przez internet. Niestety, nie jest to takie proste, ponieważ zlokalizowanie komputera po adresie ip, na które pozwala RMI odpada - obecnie komputery posiadają IP zewnętrzne i wewnętrzne i wszelkie moje próby "przemycenia" obu do metod RMI i wykonaniu udanego połączenia spełzły na niczym.

Na jednym forum ktoś zasugerował mi, żebym wykorzystał pośredniczący program na serwerze internetowym, i łączył się przez ten serwer - niestety na tym forum nikt już nic więcej nie chciał napisać. Pytam więc teraz was: czy będzie możliwe wywołać za pomocą RMI metodę serwleta działającego na serwerze, która to metoda wywoła z kolei interesującą mnie metodę na komputerze docelowym, również połączonym z tym serwletem przez RMI? Czy serwlet może być takim pośrednikiem w RMI? Czy mam sobie raczej darować ten temat i szukać innego rozwiązania?

0

Serwlety to generalnie technologia sluzaca tworzeniu aplikacji webowych i jako takie rezyduja w kontenerach, do ktorych dostep jest protokole HTTP. Ich (glownym) celem nie jest zatem na pewno implementowanie RMI. Ale na samym RMI to sie niestety nie bardzo znam... Na tej stronce: http://java.sun.com/docs/books/tutorial/rmi/overview.html jest fragment ktory mowi: '...also shows that the RMI system uses an existing web server to load class definitions, from server to client and from client to server, for objects when needed'. Moze mozna tego uzyc jako punkt startowy do dalszych 'dociekan'.

BTW Co masz na mysli mowiac ze '...obecnie komputery posiadają IP zewnętrzne i wewnętrzne...' Chodzi Tobie, ze ukryte one sa za routerami? Z tego co rozumiem, to jesli masz zamiar uzywac RMI to musisz miec jakas kontrole albo przynajmniej wiedze o 'drugiej' stronie wywolania, szczegolnie jesli jest ona serwerem dostarczajacym zdalne obiekty. W przypadku routerow mozna zawsze uzyc NAT'a zeby sie dobrac do konkretnego komputera/portu ukrytego za nim... moze powinienes sprobowac wybadac sprawe bardziej w tym kierunku?

0

Czemu jako warstwy pośredniczącej nie wykożystasz serwera RMI ?

0

BTW Co masz na mysli mowiac ze '...obecnie komputery posiadają IP zewnętrzne i wewnętrzne...' Chodzi Tobie, ze ukryte one sa za routerami?

Tak, trochę niezręcznie się wyraziłem.

W przypadku routerow mozna zawsze uzyc NAT'a zeby sie dobrac do konkretnego komputera/portu ukrytego za nim... moze powinienes sprobowac wybadac sprawe bardziej w tym kierunku?

Hmm, zapewne jest to jakiś sposób, pewnie skuteczny, tylko że będzie to ograniczało grono użytkowników programu do tych, którzy uprzednio skonfigurują sobie reuter. Wolałbym nie wymagać od użytkowników żadnych zewnętrznych akcji - jakoś w profesjonalne aplikacje radzą sobie bez tego. Ale dzięki, zainteresuję się tym tematem, jeżeli nie znajdę innego rozwiązania.

Czemu jako warstwy pośredniczącej nie wykożystasz serwera RMI ?

Możesz wyjaśnić, co masz na myśli? Chodzi Ci po prostu o komputer, na którym uruchomiona jest przez cały czas specjalna, pośrednicząca, aplikacja RMI i do którego w dowolnej chwili mogą podłączyć się użytkownicy programu? Niestety, nie mam tylu komputerów, żeby wydzielić jeden tylko do tego celu :(.

0

Ale zeby postawic serwer z posredniczacym servletem to juz masz tyle komputerow? Moim zdaniem skoro piszesz aplikacje RMI to zostan przy RMI. Masz kilka kompow, ktore moga costam wykonywac itp, nazwijmy je klientami. Nie znasz ich ip i nie wiesz czy chodza w ogole, wiec dedykujesz jakis komputer z mala aplikacja RMI, ktora bedzie takim centalnym serwerem - rejestrem. Kazdy kto wlaczy aplikacje na kliencie, polaczy sie z tym serwerem, zarejestruje, i nastepnie serwer wysle do wszystkich komputerow klientow wiadomosc ze jest nowy klient w sieci, i wszelkie informacje jak sie do niego dostac. Teraz, mozesz to rozwiazac na 2 sposoby - albo kazda operacja miedzy dwoma klientami bedzie przechodzila przez serwer, albo majac juz wszystkich klientow, bezposrednio (P2P) do nich bedziesz sie odwolywac.
Nie pytaj o implementacje, jak powiesz co i jak to na pewno bedzie tutaj wiele osob ktore ci pomoga, ale nie napisze za ciebie tego nikt.
Co do servletow, oczywiscie mozesz postawic gdzies tomcata czy inny kontener, i napisac servlet ktory bedzie robic dokladnie to samo co opisany przeze mnie wyzej serwer RMI, jednak nie uwazam za dobry pomysl zaprzegac osobnej wszak technologii skoro mozna wszystko zrobic czystym RMI.
Pozdro.

1 użytkowników online, w tym zalogowanych: 0, gości: 1