RMI = Remote Method Invocation

Slides:



Advertisements
Podobné prezentace
© 2000 VEMA počítače a projektování spol. s r. o..
Advertisements

(instance konkrétní třídy)
Talend Open Studio MDM Ing. David Pejčoch Tutorial.
Správce virtuálních strojů Martin Sloup Natalia Rubinova Jiří Kučera.
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Singleton 1 1.
Desáté cvičení Java Core API Java Collection Framework JavaDoc.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
C# - struktury, výčtové typy, pole
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Objektové programování
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Ing. Jan Mittner Základy MVC 2. Rozšíření layoutu 3. helpery 4. Bootstrap a přepis URL adres 2.
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Síťové programování Informační technologie - praxe SPŠE V úžlabině Jan Klepal, Mgr. Radka Müllerová Verze 2.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 4.
Composite [kompozit, ne kompozajt]. Composite Výslovnost  kompozit, ne kompozajt Účel  Popisuje, jak postavit hierarchii tříd složenou ze dvou druhů.
6. cvičení Polymorfismus
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
Ing. Jan Mittner Životní cyklus požadavku 2. Moduly 3. Pluginy 4. Jak řešit komponenty typu menu 5. atd. 2.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
Dílna Caché II. CSP pro pokročilé Tomáš Vaverka. Zdroje HTML Tag Reference v sekci Reference Material v dokumentaci Caché HTML Tag Reference v sekci Reference.
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
Šesté cvičení Výjimky Balíky.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost Číslo projektu: CZ.1.07/1.5.00/ Číslo materiálu: VY_32_INOVACE_PSK-4-16.
SAMBA umožňuje linuxovému systému sdílení prostředků a služeb prostřednictvím sítě používá SMB (server message block) protocol - identický protokolu.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
PJV031 Přetypování (casting) Objekty, atributy, lokální proměnné, parametry a návratové hodnoty metod mají definovaný, neměnný typ. Jsou dva druhy typů:
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
Protokoly úrovně 3 nad ATM Projektování distribuovaných systémů Lekce 2 Ing. Jiří ledvina, CSc.
Service layer. Service layer – úvod Problém  Vytvoření API aplikace  Odstínění bussiness logiky a transakčního chování od zbytku aplikace  Kam s aplikační.
Web services. Co jsou webservices Součinná spolupráce počítačů v síti Technologie pro vzdálené volání procedur (RPC) Nezávislá na platformě Data v XML.
Proxy. Popis  Klient má přístup k nějakému objektu  Potřebujeme tento přístup ošetřit, aniž bychom přidělali klientovi práci Kontrola přístupu Vzdálený.
Stanice v síti učební texty pro deváté ročníky ZŠ.
Vývoj informačních systémů Námět na praktické cvičení Klient – Server (nepovinné)
TCP, CORBA, RMI Jan Růžička Institute of geoinformatics VSB-TU Ostrava 17.listopadu 15, Ostrava-Poruba,
PJV16 1 Dokumentace Tvorba dokumentace byla vždy útrpnou záležitostí neboť: programátoři ji krajně neradi dělají - a pokud - tak až nakonec, nebývala žádná.
© 2016 InterSystems Corporation. All rights reserved. Integrace OAuth 2.0 a OpenID Connect.
Proxy. Proxy poskytuje bariéru mezi klientem a reálnou implementací.
FTP-SSL FTP-SSL Martin Dušek Martin Fúsek Josef Vlček.
PJV15 1 Vnořené ( nested ) a vnitřní ( inner ) členy Třídy či interfejsy mohou být členy tříd či interfejsů. Je-li X obalem Y a Y obalem Z, pak Z získá.
BEZPEČNOSTNÍ TECHNOLOGIE I Operační program Vzdělávání pro konkurenceschopnost Projekt: Vzdělávání pro bezpečnostní systém státu (reg. č.: CZ.1.01/2.2.00/ )
Applety Applet ( Application program–let ) je javský program upravený ke spuštění v klientově prohlížeči ( browseru ). Prohlížeč je aplikace ( application.
Bezpečnostní technologie I
Moduly.
Úvod do C# - OOP Jaroslav BURDYS 4IT.
Instalace Javy ( pro Windows )
COM – Práce s objektovým modelem jiné aplikace
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ
Y36PJC Programování v jazyce C/C++
Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: systematizují typovou kontrolu kompilátorem, vyjadřují jasněji smysl,
Návrhový vzor Flyweight
Přednáška pro předmět Operační systémy II ÚI PEF MENDELU
Polymorfismus = Mnohotvarost
Bridge.
Reflexe jako introspekce
CORBA Študent: Bc. Juraj Kráľ.
C# přehled vlastností.
Bridge.
Transkript prezentace:

RMI = Remote Method Invocation Tato technologie využívá vzdálené objekty tím, že volá jejich metody. Argumenty metod jsou požadavky a metoda případně vrátí výsledek. Vzdálený objekt existuje v jiné JVM - povětšinou na jiném počítači. Klient komunikuje se vzdáleným objektem pouze přes interfejs, který: musí být potomkem interfejsu Remote všechny jeho metody throws RemoteException Vlastní vzdálený objekt, tj. implementace, musí být: realizací programátorem definovaného interfejsu potomkem třídy - java.rmi.server.UnicastRemoteObject či Activatable ( ta zařídí export ) - anebo musí být explicitně exportován metodou java.rmi.server.UnicastRemoteObject.export(...). PJV14

RRL = Remote Reference Layer Klient - Server Vývojář odpovídá pouze za definice interfejsů a implementujících tříd - nemusí se starat o komunikační protokol. Původně musel zajistit generaci stubu a sketetonu pomocí dodatečného kompilátoru rmic – od verze 1.5 se tyto vytvářejí automaticky. JVM JVM Java RMI client (application layer) Java RMI server (application layer) stub skeleton socket factory RRL RRL Transport layer Transport layer socket JRMP on TCP/IP RRL = Remote Reference Layer PJV14

Pro v1.2 je skeleton integrován v UnicastRemoteObject RMI Unicast RemoteObject Security Manager Remote MojeTrida MujInterfejs registry Registry stub rmic client server new program object skel eton MujInterfejs stub RMI / IIOP Pro v1.2 je skeleton integrován v UnicastRemoteObject PJV14

Spouštění RMI Server vytvoří jeden vzdálený objekt a předá serializovaný stub do registry k registraci. Ten realizuje výpočet i pro více klientů. Klient získá od registry handle ke vzdálenému objektu. Registry mu vrátí serializovanou kopii stubu. Klient z ní vytvoří instanci stubu. Pro další komunikaci klient-server není registry nutná. Klientský program zavolá nějakou metodu stubu. Stub kontaktuje skeleton v serveru. Skeleton zavolá metodu vzdáleného objektu. Při každém zavolání vytvoří server nové vlákno, které provede výpočet v metodě. Metoda vrátí výsledek skeletonu. Skeleton vrátí výsledek stubu. Stub vrátí výsledek klientskému programu. PJV14

ActivationInstantiator java.rmi.* javax.management.remote.rmi RMIServer Impl RMIIIOP ServerImpl Remote RMIServer ( tag interface ) RMIJRMP ServerImpl java.rmi.registry Locate Registry Registry Distributed Garbage Collection java.rmi.dgc Marshalled Object Lease VMID DGC Naming java.rmi.activation ActivationInstantiator Activation Desc Activation GroupDesc java.lang ActivationMonitor Security Manager ActivationSystem Activation ID Activation GroupID RMISecurity Manager Activator PJV14

ActivationInstantiator RMIClientSocketFactory RMIServerSocketFactory java.rmi.server tag interface java.rmi Remote Object Remote java.io Externalizable javax.rmi.CORBA.Stub java.rmi.activation Remote Stub Remote Server Activable _Remote_Stub RemoteRef ServerRef Unreferenced Unicast RemoteObject RMIClass LoaderSpi RMIConnection Impl java.rmi.activation Activation Group RMIConnection Impl_Stub RMIClass Loader UID RMIServer Activation Group_Stub ActivationInstantiator javax.management.remote.rmi java.rmi.activation java.rmi.activation ObjID RMISocket Factory Portable RemoteObject RMIClientSocketFactory RMIServerSocketFactory RMIFailureHandler PJV14

interfejs java.rmi.Registry public void bind( String name, Remote obj ) throws RemoteException, AlreadyBoundException, AccessException public void unbind( String name ) throws RemoteException, NotBoundException, AccessException public void rebind( String name, Remote obj ) throws RemoteException, AccessException public String[ ] list( ) throws RemoteException, AccessException public Remote lookup( String name ) throws RemoteException, PJV14

Registry čili registratura umožňuje evidovat vzdálené objekty pod jednoduchým jménem. Klient jejím prostřednictvím může navázat spojení se serverem. Registry není perzistentní. Může být spuštěna v rámci OS nebo JVM. Každý servrový proces může udržovat vlastní registry nebo sdílet jedinou podporující všechny virtuální stroje na lokálním systému. Registry se vytvoří zavoláním rmiregistry.exec [ port | 1099 ], z adresáře classes anebo se tam zkopíruje jdk/bin. ( Ve Windows je třeba zkopírovat také jli.dll, tj. application extension. ) Registry se ovládá statickými metodami třídy java.rmi.Naming: bind, unbind, rebind, list a lookup PJV14

Použití Registry reg = LocateRegistry.createRegistry( port ); //SINGLETON reg.bind( "Moje", new MojeTrida( ) ); Spuštění zevnitř: Runtime.getRuntime( ).exec( "rmiregistry" ); Runtime.getRuntime( ).exec( "rmid –J-Djava.security.policy=rmid.policy" ); javaw – background in Win PJV14

Využití RMI Naming Service Klient vyhledá vzdálený objekt jménem takto: rmi://host:port/name v metodě Naming.lookup. ( Defaultně: rmi localhost 1099 .) Např.: String id = "rmi://" + host + ":" + port + "/Moje" ; MujInterfejs z = ( MujInterfejs ) Naming.lookup(); z.metoda1( ... ); PJV14

java.rmi.MarshalledObject Po deserializaci instance MarshalledObject není její obsah deserializován. Obsahuje totiž pole bytů, které může být později interpretováno jako objekt. Codebase URL je uložen uvnitř této struktury a ukazuje kde jsou příslušné classy uloženy pro automatické stažení. Tedy lze deserializovat na strojích nemající patřičnou třídu v classpath. Objekty mohou být předávány přes více strojů aniž jsou plně deserializovány. ArrayList data = ... MarshalledObject mo = new MarshalledObject( data ); Object o = mo.get( ); PJV14

Dřívější příprava stubu a skeletonu Pro uskutečnění spojení mezi klientem a serverem je třeba na straně klienta vytvoří tzv. stub. ( V Javě 1.1 bylo nutné ještě na straně serveru vytvářet tzv. skeleton. ) To zařizuje speciální kompilátor rmic, který se nalézá v j2sdk/bin/... Stub vytváří rmic podle třídy vzdáleného objektu. V JBuilderu je proto nutno u těchto tříd zvolit: -> Properties Generate RMI stub/skeleton Options: -keep –v1.2 Při rebuild se v patřičném podadresáři balíčku v classes\...\ vytvoří MojeTrida_Stub.class a v adresáři classes\Generated Source\...\MojeTrida_Stub.java. PJV14

Aktivace objektů Aktivatabilní objekty jsou zpravidla vedeny na separátní(ch) JVM. Tyto JVM se definují jako Activation Group - v ní je Activation Monitor, který sleduje všechny příslušné objektu a i tu grupu. Objekty i grupy mají ID a deskriptor. Activation group ActivationGroupID ActivationGroupDesc Activation Monitor Activatable object ActivationID ActivationDesc PJV14

Aktivační grupy Aktivátor vytváří aktivační grupy. Tím je RMI démon v jdk/bin/rmid.exe Aktivační grupy se vytvoří pomocí tříd z java.rmi.activation: ActivationGroupDesc gd = new ActivationGroupDesc( null, null ); ActivationGroupID gi = ActivationGroup.getSystem( ).registerGroup( gd ); ActivationGroup.createGroup( gi, de, 0 ); // 0 – na kterémkoli portu PJV14

Aktivatabilní objekty Implementace vzdáleného objektu je buď potomkem třídy Activatable ActivationGroup.create( ... ) viz výše String[ ] names = { , , }; MarshalledObject mo = new MarshalledObject( names ); ActivationDesc desc = new ActivationDesc( gID, " … ", null, mo ); Registrovat takto: RemoteObject stub = ( RemoteObject ) Activatable.register(desc); Naming.rebind( "MyRENOBject" , stub ); anebo je exportován: V konstruktoru se přijme ActivationID id a MarshalledObject mo names = ( String[ ] ) mo.get( ); Activatable.export( this, id, 0 ); // export do RMIRegistry Tyto úpravy se týkají pouze serveru. Pro klienta je to transparentní. PJV14