Internet Socket e RMI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Internet Socket e RMI"

Transcript

1 Internet Socket e RMI una breve introduzione alla programmazione in rete Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I Torino baldoni@di.unito.it

2 Chi sono? Come contattarmi? Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino Corso Svizzera, 185 I Torino (ITALY) URL: Tel.: Fax.: Pagina del corso: Sono nato a Torino nel 1968, nel febbraio 1993 mi sono laureato con lode in Scienze dell Informazione e nel febbraio 1998 sono diventato Dottore in Ricerca in Informatica. Dal luglio 1999 sono ricercatore in Informatica presso il Dipartimento di Informatica dell Università degli Studi di Torino. 2

3 Bibliografia Horstmann C. S. - Cornell G. Java 2 I fondamenti - seconda edizione, Mc Graw Hill, ISBN , Giugno 2001, pp. 826 con CD-ROM (Euro 54,00) Java 2 tecniche avanzate, Mc Graw Hill, ISBN , Aprile 2000, pp. 842 con CD- ROM (Euro 55,50) 3

4 Bibliografia Eckel, B.Thinking in Java. Second Edition. Prentice-Hall Computer Books, ISBN: (anche online: m) Schimdt, D. Programming Principles in Java: Architectures and Interfaces. (On-line: chmidt/cis200/) 4

5 Bibliografia Matteo Baldoni. Un introduzione al paradigma ad oggetti attraverso lo schema Kernel-Modulo. Rapporto Tecnico del Dip. Di Informatica e comparso nei numeri settembre, ottobre e novembre 2002 di Mokabyte ( 5

6 Architettura Client/Server Un servizio presso un computer-server è identificato dai seguenti valori: IP (32 bit, presto 128 bit) Port (16 bit) Client Servizi telnet Server TCP ftp Alcuni tipici servizi: telnet http ftp Client TCP http IMAP SMTP, IMAP4 NFS, DNS, NIS,... TCP Client 6

7 Socket È una astrazione software che rappresenta il terminale di una connessione tra due computer Per ogni connessione esiste un socket in ognuno dei computer coinvolti Il client effettua la richiesta di una connessione ad un server per un servizio collegato ad una determinata porta Se la richiesta è accettata la connessione tra i due applicativi dei due computer è stabilita Port Server Socket: <IP Client, Port Client, IP Server, Port Server> TPC Client Port Socket: <IP Client, Port Client, IP Server, Port Server> 7

8 Socket e Stream in Java Da ogni socket è possibile ottenere uno stream di input ed uno di output L uso dei socket è trasparente: readline e println BufferedReader in = new BufferedReader( new InputStreamReader( socket.getinputstream())); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getoutputstream())), true); Abilita il flush immediato 8

9 Socket in Java Package da importare java.net La classe java.net.socket implementa un client socket richiede l indirizzo IP e il numero della porta del servizio a cui vogliamo connetterci La classe java.net.serversocket implementa un server socket richiede il numero della porta a cui vogliamo associare il servizio crea un server che attende le richieste di connessione restituisce un socket nel momento in cui accetta un collegamento completamente istanziato nei parametri di collegamento (IP e Porta locale e remota). Server ServerSocket Port TPC Port Socket Client 9

10 Socket (Client) Socket socket = new Socket(IP, PORT); [ ] socket.close(); E`un valore intero, in genere non inferiore a 1024 (riservati al sistema) e rappresenta il numero della porta a cui Vogliamo connetterci Crea una connessione con un applicazione server (in attesa in una accept()) e restituisce il relativo socket Le eccezioni che possono essere sollevate sono del tipo IOException (da catturare e gestire!) E`un oggetto del tipo java.net.inetaddress contenente l indirizzo IP della macchina a cui vogliamo connetterci ad esempio speedy/ Port Socket Client 10

11 Un esempio: connessione alla porta 80! import java.io.*; import java.net.*; public class SocketConnectionHTTP { BufferedReader in; PrintWriter out; Socket s; public SocketConnectionHTTP(String host, int port) throws IOException { s = new Socket(host, port); in = new BufferedReader( new InputStreamReader(s.getInputStream())); out = new PrintWriter(s.getOutputStream()); public SocketConnectionHTTP() throws IOException { this(console.readline("host: "), Console.readInt("Port: ")); Le prime 1024 porte sono in genere riservate a servizi di sistema (vedi /etc/services su unix) La porta 80 è riservata in genere al servizio di web server 11

12 Un esempio: connessione alla porta 80! public String getdocument(string document) throws IOException { String temp = ""; boolean more = true; if (document==null) document = "/"; out.println ("GET "+ document + " HTTP/1.0 r n r n"); out.flush(); while (more) { String line = in.readline(); if (line == null) more = false; else temp += line + " n"; return temp; public String getdocument() throws IOException { return getdocument(console.readline("document to get? ")); public void close() throws IOException { s.close(); La lettura e scrittura tramite un socket avviene come su un qualsiasi stream di IO In modo analogo è possibile collegarsi alla porta 25 per il servizo di posta 12

13 Astrazione: connessione URL import java.io.*; import java.net.*; public class URLConnectionTest { BufferedReader in; URLConnection s; public URLConnectionTest(String urlname) throws IOException { URL url = new URL(urlName); s = url.openconnection(); s.connect(); in = new BufferedReader( new InputStreamReader( s.getinputstream() )); public URLConnectionTest() throws IOException { this(console.readline("url: ")); Per effettuare delle connessioni sia ad un server di posta che ad un server web è possibile utilizzare delle classi che realizzano delle astrazioni sul tipo di protocollo utilizzato L uso dei socket è nascosto come quello del protocollo HTTP 13

14 Astrazione: connessione URL public String getdocument() throws IOException { int n = 1; String key; while ((key = s.getheaderfieldkey(n))!= null) { String value = s.getheaderfield(n); System.out.println(key + ": " + value); n++; System.out.println(" "); System.out.println("getContentType: " + s.getcontenttype()); System.out.println("getContentLength: " + s.getcontentlength()); String temp = ""; boolean more = true; while (more) { String line = in.readline(); if (line == null) more = false; else temp += line + " n"; return temp; Per i server di posta esistono le classi del package JavaMail (package non incluso nella distribuzione standard) 14

15 ServerSocket Il metodo accept() si mette in attesa di una richiesta di connessione da un socket client Le eccezioni che possono essere sollevate sono del tipo IOException (da catturare e gestire!) Server ServerSocket Port ServerSocket s = new ServerSocket(PORT); [ ] Socket socket = s.accept(); System.out.println("Accettato socket " + socket); [ ] socket.close(); [ ] s.close(); Crea un nuovo socket sul server per accettazione di una richiesta di connessione Chiude il socket di una connessione precedentemente accettata Chiude il server 15

16 ServerSocket e Socket: gestione errori E`importante che i socket siano propriamente chiusi al termine di un applicazione in quando questi sono una risorsa di rete condivisa del sistema La chiusura dei socket deve essere eseguita indipendentemente dal flusso di esecuzione per questo e`bene utilizzare il costrutto tryfinally per garantirne la chiusura La stessa considerazione vale anche per il ServerSocket [ ] try { [ ] String str = in.readline(); [ ] out.println("offerta"); [ ] catch(ioexception e) { System.err.println("IO Exception" + e); finally { try { socket.close(); catch(ioexception e) { System.err.println("Socket not closed"); [ ] try { Socket socket = s.accept(); [ ] finally { s.close(); 16

17 Un esempio: l asta Il server è il banditore: accoglie le offerte e comunica se sono accettabili o no, comunica a richiesta la migliore offerta corrente I client sono i partecipanti all asta, possono richiedere qual è la migliore offerta (e di chi) e possono effettuare rilanci se il loro budget a disposizione lo consente 17

18 Un esempio: l asta Un thread per ogni partecipante all asta L offerta è rappresentata da un oggetto che contine l offerente e l offerta in denaro La migliore offerta è memorizzata in un oggetto il cui accesso è effettuato mediante un metodo synchronized Per trasmettere un offerta è necessario convertirla in una stringa (encode) Il server ricostruisce dalla stringa ricevuta un offerta (decode) 18

19 Stream di oggetti e Socket Nell esempio dell asta i dati di una offerta venivano opportunamente codificati in una unica stringa per essere trasferiti da un client ad un server In Java si puo`pero` utilizzare anche stream di oggetti (ObjectInputStream e OutputObjectStream) In Java e`possibile utilizzare stream di oggetti tramite socket Gli oggetti devono implementare l interfaccia java.io.serializable Anche stream di oggetti Client Port Server TPC Port E` importante che possano essere serializzati 19

20 Stream di oggetti e Socket [ ] ServerSocket s = new ServerSocket(PORT); [ ] Socket socket = s.accept(); [ ] ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); [ ] Offerta nuova = (Offerta)in.readObject(); [ ] out.writeobject("accettata"); [ ] Server Importante: la dichiarazione nel client è analoga MA è l oggetto di tipo ObjectOutputStream va creato prima dell oggetto di tipo ObjectInputStream pena il deadlock (non è un bug!) 20

21 Polimorfismo via socket? Server TPC Port Gli oggetti trasmessi via stream di oggetti preservano il loro vero tipo A patto che il client (o il server) dispongano della loro definizione Port Client 21

22 Comunicazione distribuita Java VM1 Java VM2 Port 2 Port1 Invocazione di metodi sull oggetto remoto 22

23 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 23

24 Architettura RMI Supporta vari protocolli di invocazione: unicast, multicast Applicazione Client Si occupa di preparare (marshalling) la remote call e gli oggetti per la trasmissione Applicazione Server Livello stub Livello di riferimento remoto Ogni livello è indipendente dall altro! Livello stub Livello di riferimento remoto Livello di Trasporto Rete Livello di Trasporto Si occupa della effettiva connessione, della identificazione degli oggetti remoti, del mezzo, TCP/IP, UDP (nota: RMI usa per ora solo TCP/IP) Skeleton per le versioni precedenti a Java

25 Architettura 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 stub (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 TCP/IP 25

26 RMI 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 (stub) 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) 26

27 RMI in pratica L oggetto blu sulla JVM Client desidera inviare un messaggio all oggetto rosso sulla JVM Server, gli oggetti giallo e azzurro fanno parte dei parametri del messaggio L oggetto rosso sulla JVM Server terminata l esecuzione restituisce l oggetto verde come valore di ritorno oppure solleva un eccezione JVM JVM Client messaggio valore di ritorno o eccezione Server 27

28 RMI in pratica: Interfaccia Il client deve disporre di un interfaccia che descriva l oggetto remoto È necessario che l interfaccia estenda java.rmi.remote Ogni metodo descritto puo` lanciare un eccezione di tipo java.rmi.remoteexception public interface Distributor extends java.rmi.remote { Job getnewjob() throws java.rmi.remoteexception; Job getnewjob(message msg) throws java.rmi.remoteexception; 28

29 RMI in pratica: Implementazione Il Server 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 stub per la classe) public class DistributorImpl extends java.rmi.server.unicastremoteobject implements Distributor { [..] public Job getnewjob() throws java.rmi.remoteexception { [ ] [ ] 29

30 RMI in pratica: rmiregistry, bind (rebind) Gli oggetti remoti sono individuati tramite un IP, un numero di porta e un nome (una stringa) server registry: processo pagine gialle Client JVM Si registra l oggetto rosso presso il servizio di pagine gialle Non è necessario registrare l oggetto verde <IP, port, name> registry Naming.rebind JVM stub Reference Layer: apertura di un server socket <IP, port, name> Lo stub è necessario durante il bind Server 30

31 RMI in pratica: rmiregistry, bind (rebind) La classe Naming appartiene al package java.rmi rmiregistry puo` anche essere attivato indipendentemente dal server tramite il comando rmiregistry 2000 public DistributorImpl() throws RemoteException { [ ] try { java.rmi.registry.locateregistry.createregistry(2000); Naming.rebind("rmi:// :2000/distributor",this); catch (Exception e) { System.err.println("Failed to bind to RMI Registry"); System.exit(1); IP address nome porta oggetto remoto 31

32 RMI in pratica: rmiregistry, lookup Il client ottiene uno stub (surrogato dell oggetto rosso presso il client) tramite il server registry Deve conoscerne IP, porta e nome <IP, port, name> registry <IP, port, name> JVM Naming.lookup JVM Client Server stub stub 32

33 RMI in pratica: rmiregistry, lookup L oggetto remoto è contattato tramite il server registry È necessario conoscerne l indirizzo IP, il numero della porta e il nome con cui è registrato public class Client { Distributor server; [ ] public Client() { Tipo definito dall interfaccia! try { server = (Distributor)Naming.lookup( "rmi:// :2000/distributor ); catch(exception e) { System.out.println("Failed to find distributor" + e.getmessage()); 33

34 RMI in pratica: stub client L oggetto blu invia un messaggio al surrogato oggetto rosso presso lo stub client Lo stub client inizializza la chiamata remota ed organizza i parametri da inviare Garbage collector: mantiene un riferimento all oggetto rosso: non puo` essere eliminato <IP, port, name> registry Client messaggio JVM JVM Server stub L oggetto giallo e azzurro vengono serializzati e organizzati per la spedizione (marshalling) stub 34

35 RMI in pratica: invio messaggio L oggetto remoto è ora utilizzabile come un qualsiasi oggetto locale lo stub ne è un surrogato public class Client { [..] public void process() { try { Job myjob = server.getnewjob(new Message("Richiesta Job!")); myjob.process(); catch (Exception e) { System.out.println("Failed to receive job " + e.getmessage()); [..] 35

36 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 JVM <IP, port, name> registry JVM Client Server stub Il livello di trasporto apre un socket per la connessione stub Anche HTTP se c è un firewall TCP/IP Connessione temporanea! 36

37 RMI in pratica: stub server Lo stub server riorganizza i parametri (unmarshalling) individua l oggetto da chiamare attivando il metodo desiderato (informazione contenuta nel pacchetto ricevuto) <IP, port, name> registry JVM Client stub Attenzione non vi è nessun riferimento agli oggetti giallo e azzurro sul client passati come parametro: sono copie! JVM stub Server TCP/IP 37

38 RMI in pratica: la risposta Lo stub del server cattura e riorganizza il valore restituito dall evecuzione del metodo sull oggetto rosso Lo stub server invia allo stub del client un pacchetto contenente le informazioni raccolte (l oggetto verde) Client JVM <IP, port, name> registry JVM Invia valore di ritorno o eccezione Server stub stub TCP/IP 38

39 RMI in pratica: la risposta Il server esegue il metodo invocato ed invia il valore di ritorno come se la chiamata fosse locale 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; [ ] 39

40 RMI in pratica: ricezione Lo stub client riorganizza le informazioni ricevute o l eccezione sollevata La connessione viene quindi disattivata <IP, port, name> registry JVM JVM Client Server stub stub TCP/IP 40

41 RMI in pratica: ricezione 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 Client { [..] public void process() { try { Job myjob = server.getnewjob(new Message("Richiesta Job!")); myjob.process(); catch (Exception e) { System.out.println("Failed to receive job " + e.getmessage()); [..] 41

42 RMI: riassunto Nell esempio che vedremo: javac *.java rmic -v1.2 DistributorImpl rmiregistry 2000 & java DistributorImpl java 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 registry Esegue il client Dopo in bind è attivo un thread separato per gestire le richieste di connessione, termina con CTRL-C 42

43 RMI: download dello stub Lo stub generato dal server deve essere disponibile al client ma questo, in genere, è remoto Puo` essere scaricato tramite HTTP JVM <IP, port, name> HTTP registry download JVM <IP, port, name> Web Server Client Server stub file di criteri Security Manager stub TCP/IP 43

44 java.rmi.server.codebase property La proprieta` codebase indica dove cercare una classe remotamente È l analogo del CLASSPATH Protocolli: file, ftp, o http JVM <IP, port, name> L informazione del codebase è memorizzata nel registry registry Naming.rebind JVM <IP, port, name> Web Server Client Server stub Il server viene avviato specificando la proprieta` codebase java -Djava.rmi.server.codebase= 44

45 RMI: security manager RMISecurityManager con l associato file di criteri permette di scaricare mediante il protocollo HTTP È necessario un file di criteri public class Client { Distributor server; [ ] public Client() { try { System.setSecurityManager(new RMISecurityManager()); server = (Distributor)Naming.lookup( "rmi:// :2000/distributor ); catch(exception e) { System.out.println("Failed to find distributor" + e.getmessage()); 45

46 RMI: security manager Per utilizzare il file di criteri nel client: java -Djava.security.policy=client.policy Per indicare da dove scaricare il file stub dal server: java -Djava.rmi.server.codebase= DistributorImpl file client.policy grant { permission java.net.socketpermission : ", "connect"; ; grant { permission java.security.allpermission; ; in alternativa: da usare solo per test 46

47 L utilita` policytool JDK contiene uno strumento (molto semplice) che consente la modifica dei file di criteri (o politiche) Non di facile utilizzo se non si conosce gia` come specificare le autorizzazioni 47

48 http deamon con tools.jar Per effettuare test è possibile utilizzare il package tools.jar dal progetto JINI All avvio viene attivato un demone http sulla porta specificata dall opzione -port che pubblica il direttorio specificato dall apzione -dir L opzione -verbose visualizza su console l attivita` del demone http java -jar tools.jar -port PORTA -dir DIRECTORY -verbose 48

49 RMI: polimorfismo 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! JVM <IP, port, name> HTTP registry download JVM <IP, port, name> Web Server Client Server stub file di criteri Security Manager stub TCP/IP 49

50 RMI: polimorfismo E se l oggetto inviato come parametro è piu` specializzato di quello atteso dal server? Download delle classi via HTTP durante l esecuzione del metodo sull oggetto remoto (sul server) Il server necessita a sua volta di un Security Manager per il controllo delle classi scaricate È nececessario un file di criteri per il download anche per il server Il client deve specificare dove scaricare le classi 50

51 RMI: polimorfismo <IP, port, name> Web Server HTTP download JVM Client <IP, port, name> HTTP registry download JVM Web Server Server stub file di criteri file di criteri Security Manager stub TCP/IP 51

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI Programmazione in Rete e Laboratorio Architettura / Un servizio presso un computer-server è identificato dai seguenti valori: IP (32 bit, presto 128 bit) (16 bit) Servizi telnet TCP

Dettagli

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI una breve introduzione alla programmazione in rete Chi sono? Come contattarmi? Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino Corso Svizzera, 185 I-10149

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation 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

Dettagli

Linguaggi di Programmazione: Paradigmi di Programmazione

Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione Socket, Servlet e Remote Method Invocation Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione distribuita in Java. Socket & Client-Server Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Dettagli

Oggetti Distribuiti e Java RMI

Oggetti Distribuiti e Java RMI Oggetti Distribuiti e Java RMI Oggetti Locali - Oggetti Distribuiti Oggetti Locali: sono oggetti i cui metodi possono essere invocati solo da un processo locale, cioè da un processo in esecuzione sulla

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

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

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell Informazione Politecnico di Milano Programmazione Object Oriented in Java Java Remote Method Invocation Docente: Diego Peroni CEFRIEL

Dettagli

Remote Method Invocation

Remote Method Invocation JAVA RMI LSO 2008 Remote Method Invocation Perché RMI? L obiettivo è di permettere ad una applicazione in esecuzione su una macchina locale di invocare i metodi di un oggetto in esecuzione su un altro

Dettagli

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client

Dettagli

Esercitazione di Sistemi Distribuiti: Java RMI

Esercitazione di Sistemi Distribuiti: Java RMI Esercitazione di Sistemi Distribuiti: Java RMI Anno Accademico 2007-08 Marco Comerio comerio@disco.unimib.it Richiami Teorici Oggetti distribuiti 2-16 Usuale organizzazione di un oggetto remoto con un

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

Sockets in Java. Lorenzo Gallucci

Sockets in Java. Lorenzo Gallucci Sockets in Java Lorenzo Gallucci Sockets La libreria Java dispone di un API per la gestione dell I/O di rete Il package di riferimento è java.net Vari compiti: Gestione dell I/O su socket (sia TCP che

Dettagli

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

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client

Dettagli

Architettura Client-Server

Architettura Client-Server Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la

Dettagli

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

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1 Applicazioni distribuite e sistemi ad oggetti distribuiti RPC RMI - Web Services 1 Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli

Dettagli

RMI: metodi equals e hashcode

RMI: metodi equals e hashcode RMI: metodi equals e hashcode Per verificare se due oggetti remoti contengono gli stessi dati, la chiamata indirizzata al metodo equals() avrebbe bisogno di contattare i server dove si trovano gli oggetti

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

Applicazioni web. Parte 10 Socket. Alberto Ferrari

Applicazioni web. Parte 10 Socket. Alberto Ferrari Applicazioni web Parte 10 Socket Protocolli I computer collegati ad Internet comunicano tra loro usando il Transmission Control Protocol (TCP) o lo User Datagram Protocol (UDP) Quando si scrivono programmi

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

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

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

Java RMI (Remote Method Invocation)

Java RMI (Remote Method Invocation) Java RMI (Remote Method Invocation) Accesso ad oggetti remoti In Java non sono possibili riferimenti remoti RPC in JAVA Le RMI introducono la possibilità di richiedere esecuzione di metodi remoti in JAVA

Dettagli

Chiamata remota di metodi

Chiamata remota di metodi Chiamata remota di metodi Architettura di Java RMI Esecuzione di una Java RMI Architettura di RMI client server Stub & Skeleton Stub & Skeleton Remote Reference Remote Reference Trasporto Ciascun livello

Dettagli

Corso di Telematica II

Corso di Telematica II Corso di Laurea Triennale in Ingegneria Informatica ed Ingegneria delle Telecomunicazioni Corso di Telematica II Matricola Nome, Cognome Data Orale... Prova scritta del 21/07/2005 Si implementi, in linguaggio

Dettagli

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) (RMI) Remote Method Invocation (RMI) in Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi disi.unige.it Walter Cazzola Java: Remote

Dettagli

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

Applicazioni web. Parte 5 Socket

Applicazioni web. Parte 5 Socket Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso Firewall Ogni applicazione di rete, che opera fuori da quelli che sono i confini di una rete locale, incontra inevitabilmente i cosiddetti firewall Tipicamente i firewall bloccano tutto il traffico di

Dettagli

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa RMI Remote Method Invocation Enrico Tassi, 3/4/2009 Slides originali di Nicola Gessa Remote Method Invocation Si colloca del mondo della programmazione distribuita. L obiettivo è di fornire al programmatore

Dettagli

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

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti Sistemi Distribuiti Anno Accademico 2005-06 Prof. Flavio De Paoli 1 Il modello ad oggetti 2 Distributed Objects 2-16 Common organization of a remote object with client-side proxy. 3 Caratteristiche Oggetti

Dettagli

Socket in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A lezione 17 -

Socket in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A lezione 17 - Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 17 - Socket in Java 1 Java in

Dettagli

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell Tecnologie Web L-A Java e HTTP Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e

Dettagli

MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola

MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola CdL Magistrale Informatica 2012/2013 Introduzione Uno degli obiettivi dell informatica moderna è quello di offrire servizi

Dettagli

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

Il linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Il linguaggio Java Remote Method Invocation (RMI) Oggetto remoto Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Client Server 2 Schema di principio oggetto client oggetto

Dettagli

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

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati Activation In generale i Sistemi ad oggetti distribuiti sono progettati per lavorare con oggetti persistenti. Dato che questi sistemi saranno composti da migliaia (forse milioni) di tali oggetti, sarebbe

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

20/12/2010. Package java.net (Socket ServerSocket) Package java.rmi (uso di oggetti remoti)

20/12/2010. Package java.net (Socket ServerSocket) Package java.rmi (uso di oggetti remoti) Package java.net (Socket ServerSocket) Package java.rmi (uso di oggetti remoti) La classe URL cattura il concetto di indirizzo Internet (URL) nella forma standard: http://localhost/index.html file:///autoexec.bat

Dettagli

Il problema nasce dalla caratteristica di Java di essere distribuito

Il problema nasce dalla caratteristica di Java di essere distribuito Organizzazione della lezione 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Istanziazione

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

Dettagli

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione Java RMI Alcune premesse Interfaccia e Implementazione Modello OO Interfaccia esprime una vista astratta di un ente computazionale, nascondendo organizzazione interna dettagli di funzionamento Implementazione

Dettagli

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1 Il modello Java RMI Anno accademico 2011/12 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Architettura del modello 1 L oggetto remoto è l unità di distribuzione

Dettagli

Lo strato di applicazione in Internet

Lo strato di applicazione in Internet Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,

Dettagli

appunti delle lezioni Architetture client/server: applicazioni client

appunti delle lezioni Architetture client/server: applicazioni client Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente

Dettagli

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.9 LPR-B-09 RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Lezione 9: RMI - Remote Method Invocation Andrea Corradini 1 Da

Dettagli

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

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247 Registri RMI Per poter interagire con un server remoto, un client deve essere in possesso di una sua referenza remota (ovvero un oggetto stub). Un servizio di Naming è una risorsa centralizzata che può

Dettagli

Multithreading. Multithreading/2

Multithreading. Multithreading/2 Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2

Dettagli

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo

Dettagli

ALTRI TIPI DI CONNESSIONE

ALTRI TIPI DI CONNESSIONE ALTRI TIPI DI CONNESSIONE Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo che la nostra applicazione voglia ricevere

Dettagli

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

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 2 (svolta) Socket Java con connessione Luca Foschini Anno accademico 2009/2010 Esercitazione 2 1 Architettura

Dettagli

Esercitazione: Socket Java senza connessione

Esercitazione: Socket Java senza connessione Esercitazione: Socket Java senza connessione Client e Server Datagram Sviluppare un applicazione C/S in cui: il client invia al server pacchetti contenenti il nome del file e il numero della linea del

Dettagli

Introduzione. Java. G. Prencipe prencipe@di.unipi.it. accesso alla rete -- TCP

Introduzione. Java. G. Prencipe prencipe@di.unipi.it. accesso alla rete -- TCP Java accesso alla rete -- TCP G. Prencipe prencipe@di.unipi.it Introduzione Storicamente, programmare su un sistema di macchine distribuite è sempre stato complesso Il programmatore doveva conoscere diversi

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari Java RMI I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: - Sistemi Distribuiti Dip. Informatica (S.Pizzutilo) - Seminario Java RMI di G.Cozzolongo Java RMI: Remote Method

Dettagli

Programmazione in Rete

Programmazione in Rete Programmazione in Rete a.a. 2005/2006 http://www.di.uniba.it/~lisi/courses/prog-rete/prog-rete0506.htm dott.ssa Francesca A. Lisi lisi@di.uniba.it Orario di ricevimento: mercoledì ore 10-12 Sommario della

Dettagli

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte) INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione

Dettagli

Linguaggi di Programmazione: Paradigmi di Programmazione

Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione I PACKAGE IN JAVA Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149 Torino (Italy) e-mail:

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Java RMI: Esempio Completo di un Applicazione Distribuita

Java RMI: Esempio Completo di un Applicazione Distribuita Java RMI: Esempio Completo di un Applicazione Distribuita Il Problema Produttore/Consumatore in Ambiente Distribuito* *a cura del Prof. L. Nigro, Università della Calabria Java RMI (Remote Method Invocation)

Dettagli

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche Mariarosaria Napolitano Architettura TCP/IP Corso di: Laboratorio di tecnologie informatiche e telematiche Contesto e Prerequisiti Contesto E' rivolto agli studenti del V anno degli Istituti Tecnici Industriali

Dettagli

Architettura. Java RMI (Remote Method Invocation) Definizioni e generalità

Architettura. Java RMI (Remote Method Invocation) Definizioni e generalità Java RMI (Remote Method Invocation) RPC in JAVA Le RMI introducono la possibilità di richiedere le esecuzione di metodi remoti in JAVA Integrando il tutto con il paradigma OO Client Program Stubs Architettura

Dettagli

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

L input da tastiera in Java. Dott. Ing. M. Banci, PhD L input da tastiera in Java Dott. Ing. M. Banci, PhD La lettura di un flusso di input in Java avviene attraverso l'oggetto in della classe System. System.in appartiene alla classe InputStream (letteralmente

Dettagli

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

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

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193 Servers Activatable Nelle lezioni precedenti abbiamo detto che una referenza remota ad un server di tipo UnicastRemoteObject rimane valida finchè il server è in esecuzione. Quando il server termina, o

Dettagli

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

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet: e JDBC Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino e : estensioni del Java API permettono di scrivere

Dettagli

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Laboratorio di Sistemi Distribuiti Leonardo Mariani Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante

Dettagli

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124 UnicastRemoteObject Java RMI fornisce diverse classi base per definire server remoti: UnicastRemoteObject < RemoteServer < RemoteObject dove A < B significa che A è una sottoclasse di B. UnicastRemotObject

Dettagli

Outline. Remote Method Invocation in Java. Remote Procedure Call (RPC) Introduzione Storica. Remote Procedure Call (RPC) Remote Procedure Call (RPC)

Outline. Remote Method Invocation in Java. Remote Procedure Call (RPC) Introduzione Storica. Remote Procedure Call (RPC) Remote Procedure Call (RPC) Outline Remote Method Invocation in Java Walter Cazzola Dipartimento di Informatica e Comunicazione Università degli Studi di Milano 1 2 3 Walter Cazzola Remote Method Invocation in Java Slide 1 of 33

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando

Dettagli

LA PROGRAMMAZIONE RMI

LA PROGRAMMAZIONE RMI Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Remote Method Invocation Prof. Franco Zambonelli A.A. 2005-2006 LA PROGRAMMAZIONE

Dettagli

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete I semestre 02/03 Modelli di Riferimento: TCP/IP e OSI Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Architettura di rete architettura di rete insieme delle specifiche funzionali

Dettagli

Laboratorio di reti I: Il pacchetto java.net

Laboratorio di reti I: Il pacchetto java.net Laboratorio di reti I: Il pacchetto java.net Stefano Brocchi brocchi@dsi.unifi.it 5 novembre, 2008 Stefano Brocchi Laboratorio di reti I: Il pacchetto java.net 5 novembre, 2008 1 / 43 Concetti di base

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

Insegnamento di Laboratorio di algoritmi e strutture dati

Insegnamento di Laboratorio di algoritmi e strutture dati Insegnamento di Laboratorio di algoritmi e strutture dati Roberto Posenato ver. 0.6, 31/01/2008 1 / 25 Si comincia... 1 Esigenza... Definizione Tipi di eccezioni Sollevare eccezioni Gestire le eccezioni

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

INGEGNERIA DEL SOFTWARE

INGEGNERIA DEL SOFTWARE INGEGNERIA DEL SOFTWARE MIDDLEWARE Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio per

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Firewall. RMI e Firewall

Firewall. RMI e Firewall Firewall Ogni applicazione di rete, che opera fuori da quelli che sono i confini di una rete locale, incontra inevitabilmente i cosiddetti firewall Tipicamente i firewall bloccano tutto il traffico di

Dettagli

Il linguaggio Java. Remote Method Invocation (RMI)

Il linguaggio Java. Remote Method Invocation (RMI) Il linguaggio Java Remote Method Invocation (RMI) RMI MECCANISMI BASE 2 Oggetto remoto Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Client Server 3 Schema di principio

Dettagli

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie

Dettagli

Comunicazione fra oggetti distribuiti

Comunicazione fra oggetti distribuiti Comunicazione fra oggetti distribuiti RMI RPC invocazione di metodo remoto - gli oggetti remoti ricevono le RMI interfaccia remota meccanismo per la comunicazione cliente servente come primitiva di un

Dettagli

MagiCum S.r.l. Progetto Inno-School

MagiCum S.r.l. Progetto Inno-School MagiCum S.r.l. Progetto Inno-School Area Sviluppo Web Autore: Alessio Bernardo Revisione: 1 Data: 23/05/13 Titolo: Sviluppo piattaforma e-learning e sviluppo siti web File: Documentazione tecnica Sito:

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

domenica 9 giugno 13 Serializzazione

domenica 9 giugno 13 Serializzazione Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe

Dettagli

PROGRAMMARE IN JAVA VOLUME II

PROGRAMMARE IN JAVA VOLUME II Graziano Frosini Alessio Vecchio PROGRAMMARE IN JAVA VOLUME II PROGRAMMAZIONE DI RETE INTERFACCE GRAFICHE STRUTTURE DATI JVM JVM SOCKET SOCKET PROGRAMMARE IN JAVA Volume II POGRAMMAZIONE DI RETE INTERFACCE

Dettagli

Protocolli Internet. Canale di comunicazione. canale di comunicazione

Protocolli Internet. Canale di comunicazione. canale di comunicazione Network Programming Java Programming Language Livelli di middleware Applicazioni e servizi RMI send, receive, read, write serializzazione UDP e TCP Rete 2 Protocolli Internet Un processo è definito da

Dettagli

Corso di Reti di Calcolatori. java.net.url

Corso di Reti di Calcolatori. java.net.url Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (2 a parte) paolo.trunfio@deis.unical.it 1 java.net.url URL (String spec) crea un oggetto URL

Dettagli

Architetture di rete. 4. Le applicazioni di rete

Architetture di rete. 4. Le applicazioni di rete Architetture di rete 4. Le applicazioni di rete Introduzione L avvento di tecnologie (hw, sw, protocolli) di rete avanzate ha permesso la nascita di architetture software molto evolute che permettono lo

Dettagli

Laboratorio di reti I

Laboratorio di reti I Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java

Dettagli