RMI - Distribuované objekty v Javě

Podobné dokumenty
RMI Remote Method Invocation

java remote method invocation Kateřina Fricková, Matouš Jandek

JAVA V RMI Java, letní semestr

Remote Method Invocation RMI

JAVA RMI Java, letní semestr 2018

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

Katedra měřicí a řídicí techniky, VŠB - Technická univerzita v Ostravě, tř. 17. listopadu, Ostrava-Poruba, Česká republika

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Distribuované systémy a výpočty

RMI - Remote Method Invocation

Common Object Request Broker Architecture

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

ilé aspekty distribuovaných objektových systémů

Úvod do Web Services

Úvod do CORBY. Svetlozara Arabadzhieva

Programování v jazyku Java RMI, vnitřní a vnořené třídy, generika

Java - výjimky. private void vstup() throws IOException {... }

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Komponenty v.net. Obsah přednášky

Programování v Javě I. Únor 2009

1. Programování proti rozhraní

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do programovacích jazyků (Java)

JAVA. Java Management Extensions JMX

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v Javě I. Leden 2008

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

TÉMATICKÝ OKRUH Softwarové inženýrství

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Příklad použití distribuovaných objektů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Tvorba informačních systémů

Algoritmizace a programování

Abstraktní datové typy: zásobník

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Úvod do programovacích jazyků (Java)

X-komponenty 3.1. Uživatelská příručka. J. Kocman, V. Trojan

KTE / ZPE Informační technologie

Softwarové komponenty a Internet

TÉMATICKÝ OKRUH Softwarové inženýrství

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Michal Krátký, Miroslav Beneš

Úvod do programovacích jazyků (Java)

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Teoretické minimum z PJV

7 Jazyk UML (Unified Modeling Language)

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Vytváření a použití knihoven tříd

7 Jazyk UML (Unified Modeling Language)

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

CORBA Common Object RequestBroker Architecture. Distribuované systémy 2006

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Java a XML. 10/26/09 1/7 Java a XML

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Návrh softwarových systém. Návrh softwarových systémů

Dědičnost (inheritance)

Seminář Java II p.1/43

Z. Kotala, P. Toman: Java ( Obsah )

Soubor jako posloupnost bytů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Technologie JavaBeans

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

ISZR Referenční agent.net

Abstraktní třída a rozhraní

Tvorba informačních systémů

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Se vznikem internetu se můžeme na síťovou komunikaci v Javě (komunikace mezi více JVM) dívat dvěma pohledy-způsoby:

Java a Caché IV: Manipulace s objekty

typová konverze typová inference

Distribuované systémy a výpočty

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Java - řazení objektů

Vláknové programování část V

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

(Enterprise) JavaBeans. Lekce 7

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

3 KTE / ZPE Informační technologie

Textové soubory. alg9 1

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Transkript:

Vysoká škola báňská - Technická univerzita Ostrava 30. března 2009

Osnova Co je to RMI? 1 Co je to RMI? 2 Vnější pohled Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer Pojemnování vzdálených objektů Registrace nového objektu do služby Naming 3 4

RMI (Remote Method Invocation) umožňuje objektu z jednoho Javovského Virtualního Stroje (JVM) vyvolávat metody na jiném objektu, který se může nacházet v jiném JVM. RMI se stará v zásadě o tři věci: dokáže lokalizovat vzdálený objekt komunikuje se vzdálenými objekty - komunikace na nižší úrovni je před programátorem skryta v případě dodržení podmínek dokáže přenést mezi danými objekty jiný objekt ve tvaru bajtového kódu

Vnější pohled Co je to RMI? Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming RMI aplikace se zpravidla skláda ze dvou samostatných programů: serveru, který poskytuje nějaké služby a klienta, který nějakou službu požaduje. Obrázek: Vzdtah mezi serverem a klientem

Vrstvy RMI 1/2 Co je to RMI? Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer

Vrstvy RMI 2/2 Co je to RMI? Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Obrázek: Jednotlivé vrstvy RMI

Stub & Skeletons Layer 1/2 Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Třídy stub a skeletou se automaticky generují pomoci kompilátoru rmic. Po vyvolání metody na stubu se provedou následující akce: naváže spojení s vzdáleným JVM, který obsahuje vzdálený objekt marshaluje parametry počká na dokončení vzdálené metody odmarshaluje vrácenou hodnotu vrátí výsledek klientovi

Stub & Skeletons Layer 2/2 Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Skeleton je naopak zástupný objekt v JVM, které obsahuje vzdálený objekt. Po zkontaktování vzdáleného JVM klientem je předáno řízení skeletonu, který má na starosti: odmarshalovaní parametrů vyvolání dané metody na přislušném objektu marshalování vrácené hodnoty a zaslání klientovi Používání skeletonů odstraňuje již specifikace Java 2.

Remote Reference Layer Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Vrsta slouží pro skeleton a stub jako přenosové médium. Je v ní objekt implementující rozhraní RemoteRef (package: java.rmi.server). Stub volá metody skutečného objektu pomocí metody invoke() tohot rozhraní.

Transport Layer Co je to RMI? Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Tato vrstva je logicky rozdělena do dvou částí. Ve spodní čáští této vrstvy je protkol TPC/IP. V horní části je Java Remote Method Protocol JRMP.

Pojemnování vzdálených objektů Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Služba RMI registr, slouží pro zprávu vzdálených objektů a příjmá dotazy na služby. Běží na defautlním portu 1099 Třída Naming, poskytuje metody pro získaní objektu vzdáleného registru nebo jeho registraci. Metoda lookup(), metoda slouží pro získání reference na vzdálený objekt. Předává se ji URL ve tvaru: rmi://<host name>[:<name service port>]/<service name>

Vnější pohled Vrstvy RMI Pojemnování vzdálených objektů Registrace nového objektu do služby Naming Registrace nového objektu do služby Naming Pro registraci nového objektu složí metoda bind(), této metodě se předají dva argumety jeden je jméno služby a druhý je reference na objekt, který bude službu obsluhovat. Druhou metodu, kterou lze pro registraci využít je metoda rebind(), tato metoda má stejné parametry jako metoda bind(), ovšem tato metoda zaregisturje i takovou službu, jejiž jméno je už v RMI registru, prostě ji přepíše. Nakonec třída Naming obsahuje ještě metodu unbind() ta danou službu z RMI registru odstarní.

Jednoduchý kalkulátor Pro vytvoření RMI aplikace je potřeba udělat několik kroků: Definovat rozhraní objektu Implementovat danné rozhraní Vygenerovat stub a skeleton soubory Implementovat server poskytující dané služby Implementovat klienta využívajícího poskytované služby

Jednoduchý kalkulátor Pro vytvoření RMI aplikace je potřeba udělat několik kroků: Definovat rozhraní objektu Implementovat danné rozhraní Vygenerovat stub a skeleton soubory Implementovat server poskytující dané služby Implementovat klienta využívajícího poskytované služby

Jednoduchý kalkulátor Pro vytvoření RMI aplikace je potřeba udělat několik kroků: Definovat rozhraní objektu Implementovat danné rozhraní Vygenerovat stub a skeleton soubory Implementovat server poskytující dané služby Implementovat klienta využívajícího poskytované služby

Jednoduchý kalkulátor Pro vytvoření RMI aplikace je potřeba udělat několik kroků: Definovat rozhraní objektu Implementovat danné rozhraní Vygenerovat stub a skeleton soubory Implementovat server poskytující dané služby Implementovat klienta využívajícího poskytované služby

Jednoduchý kalkulátor Pro vytvoření RMI aplikace je potřeba udělat několik kroků: Definovat rozhraní objektu Implementovat danné rozhraní Vygenerovat stub a skeleton soubory Implementovat server poskytující dané služby Implementovat klienta využívajícího poskytované služby

Jednoduchý kalkulátor Pro vytvoření RMI aplikace je potřeba udělat několik kroků: Definovat rozhraní objektu Implementovat danné rozhraní Vygenerovat stub a skeleton soubory Implementovat server poskytující dané služby Implementovat klienta využívajícího poskytované služby

Rozhraní Co je to RMI? 1 public interface C a l c u l a t o r 2 extends java. rmi. Remote 3 { 4 public double operation ( char op, i n t num ) 5 throws java. rmi. RemoteException ; 6 7 public double getcurrentval ( ) 8 throws java. rmi. RemoteException ; 9 }

Implementace rozhrani 1/2 1 public class C a l c u l a t o r I m p l 2 extends java. rmi. server. UnicastRemoteObject 3 implements C a l c u l a t o r 4 { 5 6 private double numb = 100.0; 7 8 public C a l c u l a t o r I m p l ( ) 9 throws java. rmi. RemoteException 10 { 11 super ( ) ; 12 } 13...

Implementace rozhrani 2/2 1... 2 public double operation ( char op, i n t num ) 3 throws java. rmi. RemoteException 4 { 5... 6 return numb ; 7 } 8 9 public double getcurrentval ( ) 10 { 11 return numb ; 12 } 13 }

Vygenerovaní stub a skeleton soboru Z implementovaných rozhraní se vygenerují stub a skeleton soubory pomocí RMI kompilátoru rmic. Od druhé řady Javy se už negeneruji skeleton soubory, pouze stub.

Server 1/2 Co je to RMI? 1 import java. rmi. Naming ; 2 3 public class C a l c u l a t o r S e r v e r 4 { 5 public C a l c u l a t o r S e r v e r ( ) { 6 t r y { 7 C a l c u l a t o r c = new C a l c u l a t o r I m p l ( ) ; 8 / / r e g i s t r a c e sluzby 9 Naming. rebind ( rmi : / / l o c a l h o s t :1099/ C a l c u l a t o r S e r v i c e, c ) ; 10 } 11 catch ( Exception e ) { 12 System. e r r. p r i n t l n ( Trouble : + e ) ; 13 } 14 } 15...

Server 2/2 Co je to RMI? 1... 2 public s t a t i c void main ( S t r i n g [ ] args ) 3 { 4 new C a l c u l a t o r S e r v e r ( ) ; 5 } 6 }

Klient 1/2 Co je to RMI? 1 public class C a l c u l a t o r C l i e n t 2 { 3 4 public s t a t i c void main ( S t r i n g [ ] args ) 5 { 6 t r y { 7 C a l c u l a t o r c = ( C a l c u l a t o r ) Naming. lookup ( rmi : / / l o c a l h o s t / C a l c u l a t o r S e r v i c e ) ; 8 9 char op = ; 10 i n t num = 0; 11 / / implementace obsluhy 12... 13 14 c. operation ( op, num ) ; 15 } 16...

1... 2 catch ( MalformedURLException murle ) { 3 System. out. p r i n t l n ( murle ) ; 4 } 5 catch ( RemoteException re ) { 6 System. out. p r i n t l n ( re ) ; 7 } 8 catch ( NotBoundException nbe ) { 9 System. out. p r i n t l n ( nbe ) ; 10 } 11 }

Common Object Request Broker Architecture (CORBA) Cíl standardu CORBA je v podstatě stejný jako cíl RMI: umožnit distribuovat objekty po síti a volat na nich metody. Vývoj aplikace v CORBA je malinko odlišný od vývoje aplikace v RMI. Postup je přibližně následující: Napsání interfaců v jazyce IDL Zkompilování interfaců pomocí IDL kompilátoru do nějakého programovacího jazyka - C++, Java,... Doplnění těl metod ve vygenerovaných zdrojových souborech Normální zkompilování do spustitelných souborů na patřičném OS Podobně jako u RMI, tak i u CORBA musí na síti běžet služba typu Naming, které slouží k prvotní identifikaci objektů.

Distributed Component Object Model (DCOM) Systém COM byl vytvořen firmou Microsoft a slouží pro sdílení objektů mezi aplikacemi. COM objekty jsou jednoznačně identifikované 128 bitovým číslem. Vytvoření aplikace spočívá ve vytvoření uživatelského rozhraní a COM objektů, které zajistí funkcionalitu. DCOM je pak rozšíření COM, které umožňuje, aby se COM objekty nalézaly na jiném počítači.

Konec Co je to RMI? Děkuji za pozornost :-)