Comunicazione distribuita Remote Method Invocation e Servlets Java VM1 Master in Web Technology e Security 8 settembre 2000 Port1 Port 2 Invocazione di metodi sull’oggetto remoto Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149 Torino (Italy) e-mail: [email protected] - URL: http://www.di.unito.it/~baldoni 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni RMI: goals • offrire un modello distribuito che preservi maggiormente la semantica degli oggetti Java Client RMI System • rendere il piu’ semplice possibile la scrittura di applicazioni distribuite Master in Web Technology e Security - Matteo Baldoni 3 Stubs Skeletons Remote Reference Layer 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 4 RMI • Il sistema RMI é costituito da tre livelli per supportare flessibilità nella comunicazione • Ogni livello ha le sue interfacce di comunicazione con relativi protocolli – stub/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 Master in Web Technology e Security - Matteo Baldoni Server Transport Architettura RMI 31 agosto 2000 2 Architettura RMI • Rendere trasparente l’invocazione remota di metodi su oggetti Java che risiedono su diverse Virtual machines (evoluzione di Remote Procedure Call, RPC) 31 agosto 2000 Java VM2 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 (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) 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 6 1 RMI RMI JVM1 JVM2 Obj1 Obj2 • Un client (obj1) che invoca un metodo di un oggetto server remoto (obj2) utilizza – l’indirizzo dell’oggetto remoto per mandargli il messaggio – uno stub o proxy che specifica il metodo • La Java Virtual Machine del client (JVM1) – invia le richieste all’oggetto server attraverso il remote reference layer – serializza i parametri (marshall) utilizzando lo stub – deserializza il valore di ritorno (unmarshall) utilizzando lo stub Skeletons: rif. a metodi Stubs: interf. RMI di Obj2 e parametri metodi di Obj2 System Processo Registry (yellow page service) Tcp/IP 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 7 31 agosto 2000 RMI • L’oggetto server utilizza – lo Skeleton per eseguire l’implementazione del metodo, deserializzando i parametri – lo Skeleton per serializzare il possibile valore di ritorno Master in Web Technology e Security - Matteo Baldoni 9 Comandi avvio e uso dell’esempio • • • • javac *.java rmic ServerMailBoxesImpl rmiregistry java -Djava.rmi.server.hostname=127.0.0.1 ServerMailBoxesImpl • • • • java java java java Master in Web Technology e Security - Matteo Baldoni RMI transport layer: • responsabile della connessione • ascolta le richieste in arrivo • passa i dati al reference layer • mantiene la tabella degli oggetti remoti nel particolare address space • Normalmente viene aperto un socket, se esiste un firewall l’RMI fornisce un meccanismo basato su HTTP 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 10 Servlets e Web Server Servlet: • estensioni del Java API • permettono di scrivere applicazioni indipendenti eseguite all’interno del Web server • possono servire richieste in parallelo • mantengono la sessione di lavoro con il singolo utente • efficienti e semplici da utilizzare rispetto ai programmi CGI Subscrive Matteo Send Matteo Cristina “Ciao come stai?” Receive Matteo Users 31 agosto 2000 8 RMI • Il processo Registry riceve il messaggio (invocazione di metodo con parametri serializzati) e lo invia all’oggetto server in JVM2 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 11 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 12 2 Servlets e Web Server Servlets e Web Server Web Server • Una servlet è una classe Java (estensione di HttpServlet). HTTP Client Browser HttppServletResponse HTTP • Un Web Server può ospitare più servlet (con relativi alias) HttpServletRequest • Quando il processo Web Server viene lanciato, genera un thread Java che inizializza l’oggetto Servlet (metodo init) • Ogni servlet è un thread all’interno del Web Server Servlet 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 13 Servlets 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 14 Servlets e Web Server • Ogni volta che il Web Server riceve una richiesta per una servlet S: • Apache, Netscape, Microsoft o Oracle Web Server – identifica la servlet S – invoca il metodo service dell’oggetto Servlet S, per far eseguire le operazioni richieste • le servlet erano inizialmente solo integrate nel Java Web Server della Sun • Il metodo service rappresenta l’interfaccia del secondo livello di applicazione. Al termine del metodo, S rimanda una risposta sotto forma di pagina HTML • Il Web server spedisce la pagina al browser chiamante 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 15 31 agosto 2000 Master in Web Technology e Security - Matteo Baldoni 16 3