Java - RMI obsługa wielu klientów.

0

Witam,

Piszę aplikację, na której testuje algorytm szyfrowania. Została mi narzucona technologia RMI - więc jej postaram się trzymać. Po stronie servera mam obiekt związany z kryptografią - niestety, nie działa to dobrze jak przyłączy się wiele klientów. Wtedy ten jeden obiekt jest przez nich współdzielony. Wiem, że RMI wspiera wielowątkowość. I tutaj moje pytanie - jakie mam możliwości, by każdemu klientowi przypisać osobny obiekt klasy, która funkcjonuje po stronie serwera?

1

Normalnie. Niech zdalny obiekt po stronie serwera będzie tylko dispatcherem, który zwraca klientom osobne zdalne obiekty obliczeniowe.

0

Dziękuję za szybką odpowiedź Shalom.

Niestety, nie jestem dość zaawansowanym programistą - prosiłbym o jakiś przykład, nigdy nie słyszałem o czymś takim jak dispatcher. Ogólnie - obiekt odpowiedzialny za kryptografie nie może być przesyłany w całości, jest przesyłany do klienta jedynie klucz e i n (algorytm bazuje na RSA), natomiast klucz d - nie może zostać przesłany. Każda operacja ma nowe klucze. Tak więc, obiekty muszą być zachowane po stronie serwera dla każdego klienta. (zawierają informację o zmiennej d, której klient nie może posiadać)

Tak więc jest klient - ma klucz e i n, szyfruje wiadomość i wysyła do serwera - serwer odszyfruje wiadomość, odsyła klientowi odpowiedź razem z nowymi kluczami.

Jest to projekt w celach edukacyjnych, więc nie musi mieć do końca sensu. (;

1

Niech obiekt serwera zwraca każdemu klientowi referencje do nowego obiektu zdalnego który będzie się zajmował kryptografią i tyle. Czyli teraz masz:

serwer = pobierzReferencjeDoSerwera();
serwer.koduj();
serwer.odkoduj();

a będziesz miał:

serwer = pobierzReferencjeDoSerwera();
obiektKodujący = serwer.pobierzObiektKryptograficzny();
obiektKodujący.odkoduj();
obiektKodujący.odkoduj();

a oczywiście serwer e metodzie pobierzObiektKryptograficzny stworzy nowy obiekt zdalny i zwróci referencje do niego klientowi.

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