Adam Ptaszek Krystian Formiński

Slides:



Advertisements
Podobne prezentacje
20041 Projektowanie dynamicznych witryn internetowych Paweł Górczyński ASP 3.0.
Advertisements

Język C/C++ Funkcje.
Marcin Piotrowski. Najpopularniejszymi darmowymi przeglądarkami są Internet Explorer, Opera, Mozilla Firefox, Google Chrome.
Sieci komputerowe Usługi sieciowe Piotr Górczyński 27/09/2002.
PROGRAMOWANIE STRUKTURALNE
CORBA Łukasz Wnęk.
Rozszerzalność systemów rozproszonych
Dodawanie i usuwanie oprogramowania
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Architektura systemu Gra strategiczna „Strusia Jama”
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Internet Communication Engine
Usługi sieciowe Wykład 5 DHCP- debian Jarosław Kurek WZIM SGGW 1.
Obsługa serwera zdalnego przez klienta FTP
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Systemy operacyjne.
Gniazda komunikacji sieciowej w języku Java
Proxy WWW cache Prowadzący: mgr Marek Kopel
Proxy (WWW cache) Sieci Komputerowe
Wzorce projektowe w J2EE
Artur Szmigiel Paweł Zarębski Kl. III i
Rozproszone bazy danych
Technologie informacyjne MCE Pudełko. Zakładanie strony internetowej Technologie informacyjne Marek Pudełko.
Narzędzia internetowe Paweł Rajba ttp://pawel.ii.uni.wroc.pl/
USŁUGA FTP 1. Definicja FTP. FTP (File Transfer Protocol, ang. protokół transmisji plików) jest protokołem typu klient-serwer, który umożliwia przesyłanie.
Podstawowe usługi internetu
KONFIGURACJA KOMPUTERA
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Konfiguracja kont w programie Adobe Dreamweaver
Protokół Komunikacyjny
MODEL WARSTWOWY PROTOKOŁY TCP/IP
Lokalne serwery www Serwer WWW - ang. Web server jest to oprogramowanie zainstalowane na serwerze podłączonym do sieci Internet. Używające technologii.
Prezentacja Adrian Pyza 4i.
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Prezentacja i szkolenie
Sieci komputerowe.
Programowanie obiektowe – zastosowanie języka Java SE
Maszyna wirtualna ang. virtual machine, VM.
Projekt i implementacja uogólnionego mechanizmu Java RMI
Internetowe surfowanie
Linux w sieci Konfigurowanie interfejsu sieciowego.
Prezentacja Adrian Pyza 4i.
SYSTEMY OPERACYJNE Adresowanie IP cz3.
Sieci komputerowe.
Rozdział V: Globalne sieci komputerowe
Programowanie sieciowe w Javie
Aplikacje TCP i UDP. Łukasz Zieliński
Konfiguracja VPN Klienta – Windows 7
Jednym z podstawowych celów tworzenia sieci komputerowych jest współdzielenie zasobów, takich jak pliki lub drukarki. Każdy z takich zasobów musi być udostępniony,
Clustering Technologia klastrowa - architektura łącząca serwery i urządzenia pamięci masowych w celu zwiększenia niezawodności, bezpieczeństwa i wydajności.
Konfiguracja VPN Serwera – Windows 7
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Model OSI.
Podstawy języka skryptów
Dokumentacja obsługi programów Kamil Smużyński Piotr Kościński.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Sposoby zdalnego sterowania pulpitem
Programowanie Zaawansowane
INTERNET jako „ocean informacji”
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Protokoły używane w sieciach LAN Funkcje sieciowego systemu komputerowego Wykład 5.
Programowanie Obiektowe – Wykład 2
Wydział Matematyki, Informatyki i Architektury Krajobrazu
Anonimowo ść w sieci. Sposoby zachowania anonimowośc i VPNProxyTOR.
Sieci komputerowe Usługi sieciowe 27/09/2002.
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
JavaBeans by Paweł Wąsala
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Adam Ptaszek Krystian Formiński Mechanizm RMI

Co to jest RMI ? Najkrócej ujmując, pakiet RMI (ang. Remote Method Invocation – zdalne wywołanie metod) pozwala on aplikacji klienta wywoływać metody zdalnych obiektów języka Java, czyli obiektów z innej przestrzeni adresowej, mogącej znajdować się na tej samej lub innej maszynie.

RMI pozwala danej aplikacji wywoływać metody obiektów zdalnych oraz uzyskać dostęp do obiektów zdalnych (np. w celu przypisania ich do zmiennych, przekazania w liście parametrów do metod) innych aplikacji umieszczonych na innych komputerach w sieciach, pracujących pod innymi systemami operacyjnymi i znajdujących się w różnych środowiskach Java tak, jak obiektów lokalnych.

RMI realizuje to za pomocą przesyłania całych obiektów lub ich fragmentów przez odwołanie lub przez wartość za pomocą mechanizmu serializacji za pośrednictwem ściśle zdefiniowanego protokołu z użyciem gniazd bez bezpośredniego uwidaczniania w programie tych mechanizmów.

RMI obejmuje trzy procesy proces klienta, wywołującego metody zdalnych obiektów, proces serwera, dostarczającego zdalnych obiektów, proces rejestru, wiążącego obiekty z ich nazwami. Obiekty są zgłaszane do rejestru przez serwer. Aplikacja klienta może uzyskać dostęp do zarejestrowanego obiektu pod warunkiem, że najpierw używając wcześniej poznanej nazwy obiektu, skorzysta z rejestru, by otrzymać referencję do obiektu odpowiadającą tej nazwie.

Architektura trójwarstwowa RMI Klient Aplikacja Warstwa pośrednia Warstwa odwołań zdalnych Warstwa transportu Serwer Aplikacja Warstwa szkieletowa Warstwa odwołać zdalnych Warstwa transportu sieć

Architektura trójwarstwowa RMI warstwa pośrednia po stronie klienta i warstwa szkieletowa po stronie serwera – ukrywają zdalne wywołania metod przed klasami i obiektami zdefiniowanymi lokalnie. Obiekt z warstwy pośredniej stanowi odpowiednik lokalny obiektu zdalnego

Architektura trójwarstwowa RMI warstwa odwołań zdalnych – „pakuje” wywołania metod, parametrów i zwracanych rezultatów w sposób umożliwiający transport w sieci warstwa transportowa – właściwe połączenie sieciowe systemów za pomocą TCP, UDP, GCP w połączeniu z SSL

Komunikacja RMI Do komunikacji RMI wykorzystuje przeważnie dwa rodzaje protokołów. Pierwszy z nich to JRMP (Java Remote Method Protocol) – do wersji 1.2. Począwszy od wersji 1.3 używa się IIOP (Internet Inter-ORB Protocol). Warstwa transportowa RMI ma zapewniać odpowiednią obsługę połączeń. Przykładowo, jeśli aplikacja chce korzystać z kilku równoczesnych połączeń natomiast konfiguracja sieci dopuszcza tylko jedno połączenie, warstwa transportowa RMI udostępnia kilka wirtualnych połączeń w ramach jednego połączenia TCP/IP.

Obiekt zdalny mechanizm RMI umożliwia tworzenie obiektów zdalnych jedyna forma zdalnego dostępu polega na wywoływaniu metod wyspecyfikowanych w interfejsie wywiedzionym (dziedziczącym) java.rmi.Remote ten sam interfejs może być implementowany przez wiele obiektów interfejs traktowany jest jak typ danych

Dostępność obiektu informacja o typie obiektu (czyli o zdalnym interfejsie) dostępna jest w czasie kompilacji wiązanie obiektu jest jawne i odbywa się w czasie wykonania

Trwałość obiektu obiekt udostępniany przez UnicastRemoteObject ma charakter przejściowy (istnieje tylko w czasie działania serwera) dostępny jest mechanizm obiektów aktywowalnych, ale brak bezpośredniego wsparcia dla utrwalania stanu obiektu

Lokalizacja obiektów zdalnych Istnieją dwa mechanizmy, dzięki którym aplikacja może zlokalizować obiekty zdalne, tj. uzyskać do nich referencję: aplikacja może zarejestrować swoje obiekty z metodami wykonywanymi zdalnie w serwisie nazw, np. w rmiregistry aplikacja może zwrócić i przekazać referencję do obiektu zdalnego w trybie normalnej swojej pracy

Komunikacja z obiektami zdalnymi Szczegóły komunikacji z obiektami zdalnymi ukryte są przed użytkownikiem. Wszystkie niezbędne metody i operacje dostarcza RMI. Programista korzysta z metod obiektów zdalnych tak, jakby były to wywołania metod obiektów lokalnych.

Ładowanie kodu bajtowego klas obiektów przekazywanych zdalnie RMI pozwala wywoływać metody zdalne, którym można przekazać obiekty jako parametry. Jest to możliwe, gdyż RMI dostarcza mechanizmu ładowania kodu bajtowego obiektów, jak również przesyłanie ich poprzez sieć.

Ładowanie kodu bajtowego klas obiektów przekazywanych zdalnie

Zalety dynamicznego ładowania kodu RMI pozwala na ładowanie (ściąganie) kodów bajtowych klas danego obiektu, jeśli klasa ta nie jest zdefiniowana na wirtualnej maszynie odbiorcy. typy oraz własności obiektu, wcześniej dostępnego tylko na pojedynczej wirtualnej maszynie, mogą być transmitowane do innej, być może zdalnej, wirtualnej maszyny. RMI przesyła obiekty z ich prawdziwym typem, stąd własności obiektu nie ulegają zmianie podczas przesyłania. Pozwala to na wprowadzanie nowych typów na zdalną maszynę wirtualną, dynamicznie rozszerzając własności aplikacji.

Zdalne interfejsy, obiekty i metody podobnie do innych rozwiązań, rozproszone aplikacje bazujące na RMI używają klas i interfejsów. Interfejsy definiują metody, zaś klasy implementują metody tych interfejsów (obok innych metod, którymi dysponują). w aplikacjach rozproszonych korzysta się z metod obiektów znajdujących się na różnych maszynach wirtualnych. Takie obiekty nazywane są wtedy obiektami zdalnymi. Obiekt staje się obiektem zdalnym, kiedy implementuje zdalny interfejs.

Zdalne interfejsy, obiekty i metody Interfejs zdalny charakteryzujący się tym, że: rozszerza interfejs java.rmi.Remote. każda metoda interfejsu zgłasza wyjątek java.rmi.RemoteException (obok własnych wyjątków)

Zdalne interfejsy, obiekty i metody RMI traktuje obiekty zdalne inaczej niż inne obiekty, gdy przekazywane są one z jednej maszyny wirtualnej na drugą. Zamiast robić kopię po stronie odbiorcy, RMI przekazuje zdalną namiastkę zdalnego obiektu. Namiastka pracuje jako lokalny przedstawiciel, lub pełnomocnik (proxy) obiektu zdalnego, i jest dla użytkownika (wywołującego metody zdalnego obiektu) zdalną referencją. Użytkownik wywołuje właściwie metodę namiastki, która jest odpowiedzialna za przekazanie tego wywołania do obiektu zdalnego.

Zdalne interfejsy, obiekty i metody Namiastka obiektu zdalnego implementuje te same metody interfejsu zdalnego, co sam obiekt zdalny. Dlatego pełnić rolę interfejsu, którym dysponuje zdalny obiekt. Jednak namiastka udostępnia tylko metody interfejsu zdalnego, które są dostępne na zdalnej maszynie wirtualnej.

Bezpieczeństwo Zarządca bezpieczeństwa to obiekt klasy java.lang.SecurityManager lub jej podklasy (aktualnie tylko RMISecurityManager). Jego zadaniem jest zezwalanie lub nie na wykonywanie przez aplikację potencjalnie niebezpiecznych czynności. Zarządca bezpieczeństwa ma możliwość sprawdzenia niektórych skutków wykonywanej operacji przed jej wykonaniem i może ją anulować jeśli uzna, że jej wykonanie jest niebezpieczne dla systemu - zgłosi wtedy wyjątek SecurityException. W przypadku RMI niebezpieczne może być wykonywanie kodu pobranego z sieci.

Bezpieczeństwo Przykładami operacji, które mogą znaleźć się w takim kodzie, a na które może nie zezwolić zarządca są: zakończenie maszyny wirtualnej zapis na dysk lokalny drukowanie.

Bezpieczeństwo Zarządcę bezpieczeństwa musi instalować klient, który pobiera z sieci odniesienie do obiektu zdalnego, którego klasa nie jest znana lokalnie (nie ma jej na ścieżce poszukiwań klas). Musi zostać wtedy przesłana i wprowadzona do maszyny wirtualnej klienta klasa namiastki zdalnego obiektu. W przypadku serwera nie zawsze jest to konieczne. Jeśli klient przekazuje jako argumenty metod obiekty klas, których definicji nie ma po stronie serwera (bo są to własne klasy klienta), to serwer również musi zainstalować zarządcę i odpowiednio skonfigurowany plik polityki. Jeśli tego nie zrobi - nie będzie mógł załadować klasy argumentu (na skutek wyjątku zgłoszonego przez maszynę wirtualną)

Pliki polityki Zachowanie zarządcy definiują pliki polityki. Są to pliki tekstowe, w których opisuje się zakres pozwoleń udzielanych aplikacji (np. umożliwienie dostępu do określonego katalogu na dysku, bądź obiór danych z określonego komputera w sieci).

Pliki polityki Składnia tych plików jest opisana w dokumentacji klasy java.lang.SecurityManager oraz w dokumentach docs/guide/security/permissions.html docs/guide/security/PolicyFiles.html dostarczanych wraz z dokumentacją SDK Javy.

Pliki polityki Oto zawartość pliku polityki, zezwalającego na wszystko grant { permission java.security.AllPermission; };

Tworzenie rozproszonych aplikacji w RMI Podstawowe kroki przy tworzeniu aplikacji rozproszonej: projektowanie i implementacja komponentów aplikacji rozproszonej kompilacja źródeł i generacja namiastek udostępnienie klas w sieci uruchomienie aplikacji

Projektowanie i implementacja komponentów aplikacji rozproszonej Polega na określeniu architektury aplikacji i zdefiniowaniu obiektów, które powinny być zdalnie dostępne. Na krok ten składa się: 1. definicja zdalnych interfejsów, zawierających metody do zdalnego wywoływania przez klientów (programy klientów będą korzystać z tych interfejsów, a nie z ich implementacji).

2. implementacja zdalnych obiektów (obiekty zdalne muszą implementować jeden lub więcej zdalnych interfejsów. Klasy takich obiektów mogą zawierać implementacje innych interfejsów (lokalnych lub zdalnych) oraz inne metody (dostępnie lokalnie). Jeśli klasy lokalne mają być użyte jako parametry lub wartości zwracane tych metod, to muszą one być również zaimplementowane.

3. Implementacja aplikacji serwerów i klientów (klienci używający zdalnych obiektów mogą być zaimplementowani w dowolnej chwili po zdefiniowaniu zdalnych interfejsów oraz po utworzeniu obiektów zdalnych w aplikacjach serwerów)

Kompilacja źródeł i generacja namiastek • Na początek kompilowane są (javac) pliki źródłowe zawierające: interfejsy zdalne, ich implementacje, klasy serwerów i klasy klientów. • Następnie uruchamiany jest kompilator rmic, aby utworzyć namiastki obiektów zdalnych. RMI wykorzystuje namiastki zdalnych obiektów jako pośredników w klientach Namiastki tworzą na maszynie klienta blok informacji przesyłanych do serwera, składający się z: • identyfikator obiektu zdalnego • opis metody, która ma zostać wywołana • szeregowane parametry Odbiorca po stronie serwera dla każdego zdalnego wywołania metody • rozszeregowuje parametry • lokalizuje obiekt, którego metoda ma być wywołana • wywołuje metodę i jej wynik (lub wyjątek) szereguje • wysyła szeregowane dane jako informację zwrotną na stronę klienta

Przygotowanie wdrożenia W kroku tym pliki klas związanych ze zdalnym interfejsem, namiastki oraz inne potrzebne klasy udostępniane są w sieci (np. przez Web serwer).

Uruchomienie aplikacji Przy umieszczeniu serwera i klienta na jednym komputerze: 1. Uruchomieniu rejestru RMI na tej samej maszynie, co serwer. Podczas uruchamiania rejestru RMI w ścieżce klas nie powinno być widać żadnych klas należących do aplikacji start rmiregistry 2. Uruchomieniu aplikacji serwera (zakładamy, że działa serwer http) java –Djava.rmi.server.codebase=http://localhost/download/ MyServer Jeśli chcemy korzystać z lokalnego katalogu (nie przez serwer http): java –Djava.rmi.server.codebase=file:/F:\RMItest/ -classpath "F:\RMItest" MyServer 3. Uruchomieniu aplikacji klienta. java –Djava.security.policy=client.policy MyClient

Przy umieszczeniu serwera zdalnie można skorzystać z adresów URL plików. Konfiguracja i uruchomienia są wtedy następujące: client.policy (dla połączeń RMI oraz HTTP) grant { permission java.net.SocketPermission "*:1024-65535", "connect" permission java.net.SocketPermission "*:80", "connect" permission java.io.FilePermission "downloadDirectory", "read" } gdzie zamiast * można umieścić nazwę komputera uruchomienie rejestru RMI • uruchomienie serwera java –Djava.rmi.server.codebase=file://home/test/download/ MyServer& lub start java –Djava.rmi.server.codebase=file://c:\home\test\download/ MyServer można też podać dodatkowe opcje: -Djava.rmi.server.hostname=jakishost.com -Djava.security.policy=java.policy • uruchomienie klienta