Java Remote Method Invocation



Documenti analoghi
Internet Socket e RMI

Internet Socket e RMI

Socket & RMI Ingegneria del Software - San Pietro

Linguaggi di Programmazione: Paradigmi di Programmazione

Programmazione di sistemi distribuiti

RMI. Java RMI RMI. G. Prencipe

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Programmazione distribuita

Esercitazione di Sistemi Distribuiti: Java RMI

RMI Remote Method Invocation

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L

Internet Socket e RMI

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

RMI: metodi equals e hashcode

Introduzione a Java Remote Method Invocation (RMI)

Introduzione alle applicazioni di rete

Sistemi Operativi (modulo di Informatica II)

appunti delle lezioni Architetture client/server: applicazioni server

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Il linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete

JNDI. Massimo Merro Programmazione di Rete 214 / 229

La sicurezza nel Web

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

FPf per Windows 3.1. Guida all uso

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Remote Method Invocation (RMI)

appunti delle lezioni Architetture client/server: applicazioni client

Reti di Telecomunicazione Lezione 6

Cenni di programmazione distribuita in C++ Mauro Piccolo

Seminario di Sistemi Distribuiti RPC su SOAP

Sistemi Distribuiti. Anno Accademico Prof. Flavio De Paoli. Il modello ad oggetti

Altri tipi di connessione

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

T42 Tunnel For Two Secure SSL InterApplication Relay Clizio Merli - 4u Srl S.r.l.

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

Lezione 1 Introduzione

Reti di calcolatori ed indirizzi IP

Inizializzazione degli Host. BOOTP e DHCP

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

RMI. Prova pratica di Sistemi Distribuiti:

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Do-Dots Protocollo di comunicazione

Comunicazione fra oggetti distribuiti

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

13. Chain of Responsibility

Reti di Calcolatori. Il Livello delle Applicazioni

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:

Ingegneria del Software. Presentazione del pattern Proxy

7.4 Estrazione di materiale dal web

Architetture software

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

Siti web centrati sui dati (Data-centric web applications)

CORBA ( Common Object Request Broker Architecture ) Le specifiche più conosciute sono UML e CORBA

Installazione del software Fiery per Windows e Macintosh

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Laurea Specialistica in Informatica, Tecnologie Informatiche Anno Accademico 2008/2009 Reti Applicazioni e Servizi

Oggetti Distribuiti e Java RMI

GESTIONE DEI PROCESSI

Licenza per sito Manuale dell amministratore

Java RMI (Remote Method Invocation)

Studi di Settore. Nota Operativa 22/4/2013

Creare connessioni cifrate con stunnel

Standard di comunicazione

Reti di Telecomunicazione Lezione 8

Corso di Reti di Calcolatori T

Distributed Object Computing

Controllo Winsock di Visual Basic

Seminario di Sistemi Distribuiti: RPC su SOAP

InitZero s.r.l. Via P. Calamandrei, Arezzo

Tecnologie di Sviluppo per il Web

Informatica per la comunicazione" - lezione 13 -

SISTEMI OPERATIVI DISTRIBUITI

I/O su Socket TCP: read()

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Il protocollo BitTorrent

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Informatica per la comunicazione" - lezione 9 -

Definire un surrogato per un oggetto per controllare gli accessi ad esso.

Esercizio 2. Client e server comunicano attraverso socket TCP

Software Servizi Web UOGA

Applicazioni distribuite

Elementi sull uso dei firewall

PORTALE CLIENTI Manuale utente

Coordinazione Distribuita

Laboratorio di Programmazione in rete

Programmazione dei socket con TCP #2

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Applicazioni web centrati sui dati (Data-centric web applications)

Approfondimenti. Contenuti

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Transcript:

Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino baldoni@di.unito.it http://www.di.unito.it/~baldoni/didattica Invocazione di metodi sull oggetto 2 RMI: goal Rendere trasparente l invocazione remota di metodi su oggetti Java che risiedono su diverse Virtual machines (evoluzione di Remote Procedure Call, RPC) offrire un modello distribuito che preservi maggiormente la semantica degli oggetti Java rendere il piu semplice possibile la scrittura di applicazioni distribuite RMI è un ORB (Object Request Broker) ma non un CORBA (Common Object Request Broker Architecture) come stabilito dall OMG (Object Management Group) analogo a DCOM della Microsoft 3 Architettura RMI Supporta vari protocolli di invocazione: unicast, multicast Applicazione Livello Livello di riferimento Applicazione Livello Livello di riferimento Livello di Trasporto Rete Livello di Trasporto Si occupa della effettiva connessione, della identificazione degli oggetti remoti, del mezzo,, UDP (nota: RMI usa per ora solo ) Si occupa di preparare (marshalling) la remote call e gli oggetti per la trasmissione Ogni livello è indipendente dall altro! Skeleton per le versioni precedenti a Java 1.2 4 Architettura RMI RMI Il sistema RMI e` costituito da tre livelli per supportare flessibilità nella comunicazione Ogni livello ha le sue interfacce di comunicazione con relativi protocolli (e skeleton) layer: canale di comunicazione tra clients e server remote reference layer: supporto di diversi protocolli di invocazione tipo Unicast e Multicast transport layer: supporta la comunicazione a basso livello, tipo 5 Simile all invocazione di metodi locali i parametri dei metodi possono essere oggetti il polimorfismo e` supportato: oggetti diversi possono rispondere a stessi messaggi ma i client interagiscono con interfacce di oggetti () non con la loro implementazione (che sta nella VM remota) parametri passati per copia, non per referenza (passaggio per referenza solo dentro a una VM) Distributed Garbage Collector (DGC) 6 1

RMI in pratica L oggetto blu sulla desidera inviare un messaggio all oggetto rosso sulla, gli oggetti giallo e azzurro fanno parte dei parametri del messaggio L oggetto rosso sulla terminata l esecuzione restituisce l oggetto verde come valore di ritorno oppure solleva un eccezione RMI in pratica: Interfaccia Il client deve disporre di un interfaccia che descriva l oggetto È necessario che l interfaccia estenda java.rmi.remote Ogni metodo descritto puo` lanciare un eccezione di tipo java.rmi.remoteexception messaggio valore di ritorno o eccezione public interface Distributor extends java.rmi.remote { Job getnewjob() throws java.rmi.remoteexception; Job getnewjob(message msg) throws java.rmi.remoteexception; 7 8 RMI in pratica: Implementazione Il implementa la classe che esegue praticamente i metodi che sono descritti nell interfaccia remota Questa classe è necessario che estenda la classe java.rmi.server.unicastremoteobject (attualemente l unica disponibile, multicast in una futura versione) che rende accessibile le sue istanze remotamente (puo` creare uno per la classe) public class DistributorImpl extends java.rmi.server.unicastremoteobject implements Distributor { public Job getnewjob() throws java.rmi.remoteexception { 9 RMI in pratica: rmi, bind (rebind) Gli oggetti remoti sono individuati tramite un IP, un numero di porta e un nome (una stringa) server : processo pagine gialle Si registra l oggetto rosso presso il servizio di pagine gialle Non è necessario registrare l oggetto verde Naming.rebind Reference Layer: apertura di un server socket Lo è necessario durante il bind 10 RMI in pratica: rmi, bind (rebind) La classe Naming appartiene al package java.rmi rmi puo` anche essere attivato indipendentemente dal server tramite il comando rmi 2000 RMI in pratica: rmi, lookup Il client ottiene uno (surrogato dell oggetto rosso presso il client) tramite il server Deve conoscerne IP, porta e nome public DistributorImpl() throws RemoteException { porta java.rmi..locateregistry.createregistry(2000); Naming.rebind("rmi://130.192.239.145:2000/distributor",this); System.err.println("Failed to bind to RMI Registry"); System.exit(1); IP address nome oggetto Naming.lookup 11 12 2

RMI in pratica: rmi, lookup L oggetto è contattato tramite il server È necessario conoscerne l indirizzo IP, il numero della porta e il nome con cui è registrato RMI in pratica: client L oggetto blu invia un messaggio al surrogato oggetto rosso presso lo client Lo client inizializza la chiamata remota ed organizza i parametri da inviare Garbage collector: mantiene un riferimento all oggetto rosso: non puo` essere eliminato public class { Distributor server; Tipo definito dall interfaccia! public () { server = (Distributor)Naming.lookup( "rmi://130.192.239.145:2000/distributor ); catch(exception e) { System.out.println("Failed to find distributor" + e.getmessage()); 13 messaggio L oggetto giallo e azzurro vengono serializzati e organizzati per la spedizione (marshalling) 14 RMI in pratica: invio messaggio L oggetto è ora utilizzabile come un qualsiasi oggetto locale lo ne è un surrogato public class { public void process() { Job myjob = server.getnewjob(new Message("Richiesta Job!")); myjob.process(); System.out.println("Failed to receive job " + e.getmessage()); 15 RMI in pratica: connessione Il livello di trasporto è responsabile per una connessione, nel server ascolta le richieste in arrivo mantiene la tabella degli oggetti remoti nel particolare address space Scambia le informazioni con il reference layer Anche se c è un firewall Il livello di trasporto apre un socket per la connessione Connessione temporanea! 16 RMI in pratica: server RMI in pratica: la risposta Lo server riorganizza i parametri (unmarshalling) individua l oggetto da chiamare attivando il metodo desiderato (informazione contenuta nel pacchetto ricevuto) Attenzione non vi è nessun riferimento agli oggetti giallo e azzurro sul client passati come parametro: sono copie! Lo del server cattura e riorganizza il valore restituito dall evecuzione del metodo sull oggetto rosso Lo server invia allo del client un pacchetto contenente le informazioni raccolte (l oggetto verde) Invia valore di ritorno o eccezione 17 18 3

RMI in pratica: la risposta RMI in pratica: ricezione Il server esegue il metodo invocato ed invia il valore di ritorno come se la chiamata fosse locale Lo client riorganizza le informazioni ricevute o l eccezione sollevata La connessione viene quindi disattivata public DistributorImpl() throws RemoteException { public Job getnewjob(message msg) { System.out.println(msg); if( count < jobs.size()) { return (Job)jobs.elementAt(count++); else { System.exit(0); return null; 19 20 RMI in pratica: ricezione RMI: riassunto Il valore di ritorno è utilizzato come se fosse ora un oggetto locale ma non ha nessun riferimento con quello creato sul server (come per i parametri inviati con la chiamata) public class { public void process() { Job myjob = server.getnewjob(new Message("Richiesta Job!")); myjob.process(); System.out.println("Failed to receive job " + e.getmessage()); 21 Nell esempio che vedremo: javac *.java rmic -v1.2 DistributorImpl rmi 2000 & java DistributorImpl java Esegue il client Crea il file: DistributorImpl_Stub.class Senza l opzione viene creato anche il file DistributorImpl_Skel.class compatibile sia con Java 1.1 e 1.2 Attiva il server Attiva il server Dopo in bind è attivo un thread separato per gestire le richieste di connessione, termina con CTRL-C 22 RMI: dello Lo generato dal server deve essere disponibile al client ma questo, in genere, è Puo` essere scaricato tramite Web java.rmi.server.codebase property La proprieta` codebase indica dove cercare una classe remotamente È l analogo del CLASSPATH Protocolli: file, ftp, o http Web L informazione del codebase è memorizzata Naming.rebind nel file di criteri 23 Il server viene avviato specificando la proprieta` codebase java -Djava.rmi.server.codebase=http://Host/dirctory/ 24 4

RMI: security manager RMI: security manager RMISecurityManager con l associato file di criteri permette di scaricare mediante il protocollo È necessario un file di criteri public class { Distributor server; public () { System.setSecurityManager(new RMISecurityManager()); server = (Distributor)Naming.lookup( "rmi://130.192.239.145:2000/distributor ); catch(exception e) { System.out.println("Failed to find distributor" + e.getmessage()); 25 Per utilizzare il file di criteri nel client: java -Djava.security.policy=client.policy Per indicare da dove scaricare il file dal server: java - Djava.rmi.server.codebase=http://baldo.di.unito.it/~baldoni/dowload/ rmi1/ DistributorImpl grant file client.policy { permission java.net.socketpermission "130.192.239.145:1024-65535", "connect"; permission java.net.socketpermission "130.192.239.1:80", "connect"; ; 26 L oggetto inviati tramite RMI preservano il loro vero tipo Ma se il valore restituito è piu` specializzato di quello atteso dal client che succede? Download delle classi per trattare l oggetto specializzato! file di criteri Web 27 E se l oggetto inviato è piu` specializzato di quello atteso dal server? Download delle classi via durante l esecuzione del metodo sull oggetto (sul server) IL server necessita a sua volta di un per il controllo delle classi scaricate È nececessario un file di criteri per il anche per il server Il client deve specificare dove scaricare le classi 28 Bibliografia Web Web C. S. Horstmann, G. Cornell. Java 2 Tecniche Avanzate, McGrawHill, 2000. ISBN 88-386-4071-8. Capitolo 5. M. Risso. Java 2 Programmazione distribuita. Apogeo, 1999. ISBN 88-7303-608-2. file di criteri file di criteri 29 30 5