RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

Podobne dokumenty
Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Aplikacje RMI

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Remote Method Invocation 17 listopada 2010

Podejście obiektowe do budowy systemów rozproszonych

Aplikacje RMI Lab4

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Java programowanie w sieci. java.net RMI

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

Programowanie rozproszone w języku Java

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1

Interfejsy w Javie. Przykład zastosowania interfejsów:

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Tworzenia aplikacji rozproszonej RMI

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Systemy Rozproszone - Ćwiczenie 6

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Michał Jankowski. Remoting w.net 2.0

Programowanie obiektowe

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Aplikacja wielowątkowa prosty komunikator

1 Atrybuty i metody klasowe

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Tworzenie aplikacji rozproszonej w Sun RPC

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Obiekty w plikach wykonywalnych, marshaling

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Ćwiczenie 1. Przygotowanie środowiska JAVA

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Java jako język programowania

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Podstawy programowania obiektowego

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

Aplikacje w środowisku Java

Programowanie zespołowe

Aplikacja wielow tkowa prosty komunikator

Programowanie w Javie

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Programowanie obiektowe zastosowanie języka Java SE

Tworzenie i wykorzystanie usług

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Języki i metody programowania Java. Wykład 2 (część 2)

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Platformy Programistyczne Zagadnienia sieciowe i wątki

Programowanie obiektowe

Przykłady interfejsu TCP i UDP w Javie

Metody dostępu do danych

Programowanie obiektowe

Spis treści. 1 Java T M

Serwery Statefull i Stateless

Multimedia JAVA. Historia

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Wykład 4: Klasy i Metody

Programowanie współbieżne i rozproszone

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

76.Struktura oprogramowania rozproszonego.

Podstawy języka Java. przygotował:

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Instrukcja dla instalatora systemu SMDP Enterprise/Professional

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Dokumentacja do API Javy.

Wybrane działy Informatyki Stosowanej

Aplikacje internetowe i rozproszone - laboratorium

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Aplikacje w środowisku Java

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Wykład 1: Wprowadzenie do technologii Java

Transkrypt:

Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems

www.cs.agh.edu.pl/~slawek/zrodla_rmi2.zip

Kilka pytań Co mamy? rok 2005-ty, gotową wersję 2 programu NoteBoard. Jak przebiegałby proces zmiany wersji serwera? 1. rekompilacja serwera 2. dystrybucja stubów do wszystkich klientów 3. uruchomienie klientów Jak to zautomatyzować? 3

Dynamiczne ładowanie klas rmiregistry: poza referencją przechowuje informacje o lokalizacji plików *.class Uruchomienie serwera: java Djava.rmi.server.codebase= file://c:/.../classes/ http://myserver:8080/archiwum.jar ftp://ftp.server.aqq/classes/ Klient Klasy lokalne są ładowane w pierwszej kolejności usunąć... Musimy zainicjować security manager coś musi nam pozwolić na załadowanie klas po uruchomieniu VM -Djava.security.manager -Djava.security.policy=<plik> 4

Rozbudowujemy naszą aplikację wersja 2.1 Co zmieniamy Klient nie ma stubów obiektów serwera w zmiennej CLASSPATH WŁASNE MA! Konfigurujemy parametry uruchomienia -Djava.security.manager -Djava.security.policy=<plik> -Djava.rmi.server.codebase=... W oznaczonym miejscu umieszczamy stuby obiektów serwera w naszym przypadku tylko obiektu NoteBoardImpl 5

Rozbudowujemy naszą aplikację wersja 2.1 Co zmieniamy w kodzie klienta: // System.setSecurityManager( new RMISecurityManager() ); System.setSecurityManager( new SecurityManager() ); w kodzie serwera: albo przy uruchomieniu: java Djava.security.manager... oprócz tego trzeba jeszcze zdefiniować politykę zabezpieczeń java Djava.security.policy=<plik>... 6

Plik security policy - przykłady grant { }; permission java.security.allpermission; grant { }; permission java.net.socketpermission "*:1024-", "connect,accept"; permission java.net.socketpermission "*:80", "connect"; grant codebase "file:${java.home}/lib/-" { permission java.lang.runtimepermission "loadlibrary.*"; permission java.lang.runtimepermission "accessclassinpackage.*"; permission java.lang.runtimepermission "queueprintjob"; } 7

Uruchomienie rmiregistry rmiregistry Serwer: java -Djava.rmi.server.codebase=.../download/serwer/ -Djava.security.policy=.../all.policy...NoteBoardServer Klient: java -Djava.security.policy=.../all.policy...NoteBoardClient Uwaga 1: / na końcu ścieżek Uwaga 2: zakładamy, że serwer posiada stuby klienta 8

Jak uczynić serwer dynamicznym? Co zmieniamy: serwer nie posiada stubów klas klienta serwer może korzystać z RMI Class Loadera Czego nie zmieniamy: serwer jest uruchamiany wcześniej, niż klient Co zyskujemy: serwer jest mniej uzależniony od zmian w kliencie (i vice versa) No to siup! 9

Activation co to jest i co nam to daje? mechanizm tworzenia obiektów serwera na żądanie klienta wspomaga tworzenie dużych systemów rozproszonych składających się z wielu rzadko wykorzystywanych obiektów 10

Activation jak to działa? Stub obiektu serwera zawiera tzw. faulting reference, która składa się z: activation ID: persystentny identyfikator obiektu serwera live reference: z początku null, po aktywacji zdalna referencja Aktywacją obiektów zarządza tzw. activator, który przechowuje m.in. dane niezbędne do uruchomienia obiektu (lokalizacja kodu itd.) activator tworzy tzw. activation groups pracujące w osobnych maszynach wirtualnych pobierz_ref Stub Activator VM zdalna_ref cache utwórz_obiekt zdalna_ref 11

Activation jak tego użyć? Potrzebne są: dodatkowy konstruktor z parametrami: ActivationID MarshalledObject rejestracja ActivationDescriptor zawiera ActivationGroupID, nazwę klasy, codebase oraz dane konieczne przy aktywacji (MarshalledObject) uruchomienie rmid Zmiany implementacyjne NoteBoard: dodatkowy konstruktor w NoteBoardImpl modyfikacja klasy NoteBoardServer 12

Zmiany w NoteBoardImpl // Dodatkowy konstruktor wywoływany przez RMID public NoteBoardImpl( ActivationID id, MarshalledObject data ) { } throws RemoteException // Rejestrujemy się w activation system // i eksportujemy referencję na anonimowym porcie Activatable.exportObject(this, id, 0); 13

Klasa rejestrująca serwer -1 public static void main(string[] args) throws Exception { System.setSecurityManager(new SecurityManager()); Properties props = new Properties(); props.put("java.security.policy", "~/javaall.policy"); // Tworzymy środowisko uruchomieniowe dla NoteBoard ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc examplegroup = new ActivationGroupDesc(props, ace); // Rejestrujemy utworzone środowisko ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(exampleGroup); 14

Klasa rejestrująca serwer -2 // Miejsce przechowywania naszych klas String location = "file:~/dydakt/lab2/serwer"; MarshalledObject data = null; ActivationDesc desc = new ActivationDesc( agi, "agh.rozproszone.noteboardimpl", location, data ); 15

Klasa rejestrująca serwer -3 // Rejestrujemy się w RMID NoteBoard ari = (NoteBoard)Activatable.register(desc); // Efekt rejestracji aktywujący stub Naming.rebind("NoteBoard", ari); System.out.println("Exported NoteBoard"); // i tyle... System.exit(0); } 16

Uruchomienie rmid rmid J Djava.security.policy=rmid.policy [-port <n>] rmid.policy: grant { } permission com.sun.rmi.rmid.execoptionpermission... dokładny opis na java.sun.com/j2se/docs/tooldocs/solaris/rmid.html rmiregistry - tak jak zawsze UWAGA! Ani rmid, ani rmiregistry nie powinny mieć w CLASSPATH stubów! 17

Co trzeba zrobić (BWZD) zmodyfikować aplikację serwera tak, aby tylko rejestrowała obiekt, który będzie aktywowany wykorzystać minimalny plik rmid.policy 18