Remote Method Invocation e Servlets

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