Aspetti avanzati dell`uso di Java

Aspetti avanzati dell’uso di Java
in ambienti distribuiti
Liliana Ardissono
Giovanna Petrone
Argomenti
• Comunicazione distribuita: RMI
• Connessione al Web: Servlet e Web Server
• Comunicazione con database relazionali: JDBC
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
2
1
Comunicazione distribuita
Remote Method Invocation
Java VM1
Port1
Port 2
Invocazione di metodi
sull’oggetto remoto
01/03/00
Java VM2
Oggetto remoto
Aspetti avanzati dell’uso di Java in ambienti distribuiti
3
Remote Method Invocation: Goals
• 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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
4
2
Remote Method Architecture I
Client
RMI
System
Server
Stubs
Skeletons
Remote Reference Layer
Transport
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
5
Remote Method Architecture II
• 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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
6
3
Remote Method Invocation I
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)
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
7
Remote Method Invocation II
RMI
System
JVM1
JVM2
Obj1
Obj2
Stubs: interf. metodi Skeletons: rif. a metodi
di Obj2 e parametri
di Obj2
Processo Registry
(yellow page service)
Tcp/IP
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
8
4
Remote Method Invocation III
• 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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
9
Remote Method Invocation IV
• Il processo Registry riceve il messaggio
(invocazione di metodo con parametri serializzati)
e lo invia all’oggetto server in JVM2
• L’oggetto server utilizza
– lo Skeleton per eseguire l’implementazione del metodo,
deserializzando i parametri
– lo Skeleton per serializzare il possibile valore di ritorno
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
10
5
Remote Method Invocation V
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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
11
Esempio di RMI - I
Metodo del client che invia un messaggio ad un
oggetto remoto (DbUsrsInterface):
public int addUserData (String[] data) {
DbUsrsInterface obj;
….. Try {
obj =
(DbUsrsInterface)Naming.lookup(“rmi://130.192.233.241/dbServer”);
idUser = obj.addUser(data);
……} catch (Exception e) {……}
}
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
12
6
Esempio di RMI - II
Interfaccia dell’ oggetto del server che riceve un
messaggio ad un oggetto nel client:
public interface DbUsrsInterface extends java.rmi.Remote {
String addUser(String [] data);
< altri metodi >
}
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
13
Esempio di RMI - III
public class DbUsrsImpl extends UnicastRemoteObject
implements DbUsrsInterface
Il metodo addUser e’ un normale metodo Java che viene
realizzato nell’implementazione di questa interfaccia.
public static void main (String[] args) {
….. Try {
DbUsrsImpl obj = new DbUsrsImpl (“DbServer”);
Naming.rebind (“rmi://130.192.233.241/DbServer”, obj);
……} }
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
14
7
Esempio di RMI - IV
Creazione di un oggetto server su una macchina:
• si compilano DbUsrsInterface DbUsrsImpl
• si utilizza rmic per creare stub e skeleton
• si lancia rmiregistry per registrare i metodi offerti
dall’interfaccia
• si lancia DbUsrsImpl nella virtual machine locale
rendendolo server
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
15
RMI: conclusioni
• CORBA:
– distribuzione di programmi scritti in linguaggi
eterogenei: interoperabile
– IDL non supporta veri oggetti
• DCOM:
– tipo CORBA, platform-dependent (Windows)
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
16
8
Servlets e Web Server I
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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
17
Servlet e Web Server II
Web Server
HTTP
Client
Browser
HttppServletResponse
HTTP
HttpServletRequest
Servlet
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
18
9
Servlets e Web Server III
• Una servlet è una classe Java (estensione di
HttpServlet).
• Un Web Server può ospitare più servlet (con
relativi alias)
• 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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
19
Servlets
• Ogni volta che il Web Server riceve una richiesta per una
servlet S:
– identifica la servlet S
– invoca il metodo service dell’oggetto Servlet S, per far
eseguire le operazioni richieste
• 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
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
20
10
Richieste
ES:
http://silk.di.unito.it:8081/setaZone/negozio.SnMg
r?action=userChoice&product=telephone
• La classe HttpServletRequest offre i metodi per
– determinare i parametri di una richiesta (action,
product)
– estrarre i valori speficati per i parametri nella richiesta
(userChoice, telephone)
• NB: si parsificano le richieste facilmente
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
21
Esempio di metodo service I
Nel metodo service:
• si estraggono i parametri della richiesta
• si gestisce la richiesta (ev. invocando metodi di
altri oggetti Java - applicazione)
• si restituisce una risposta al Web server
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
22
11
Esempio di metodo service II
public void service (HttpServletRequest req, HttpServletResponse resp) {
…...
PrintStream out = new PrintStream(resp.getOutputStream());
for (Enumeration e=req.getParameterNames(); e.hasMoreElements();)
{String parName = (String)e.nextElement();
arg = req.getParameter(parName);
hash.put(parName, arg); }
String nextPage = dialogMgr.getPage(hash); //applicazione
setCookie(resp, userId);
out.println(nextPage); out.close();
}
private void setCookie(HttpServletResponse resp, String userId) {
Cookie cookie = new Cookie(s1, s2); …...
resp.addCookie(cookie); }
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
23
Servlet e Web Server
• Apache, Netscape, Microsoft o Oracle Web Server
• le servlet erano inizialmente solo integrate nel
Java Web Server della Sun
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
24
12
Internet 3-level Architecture
Clients
Web Server
DB Server
HTTP
RMI/CORBA
S1
HTTP
JDBC
HTTP
01/03/00
S2
Aspetti avanzati dell’uso di Java in ambienti distribuiti
25
Web Server e Servlets
3-level Architecture
• Vantaggi:
– I livelli devono essere il più indipendenti possibile
– più facile manutenzione e riusabilità
– il livello interfaccia (browser) non ha quasi costo di
manutenzione
• Svantaggi:
– necessità di una rete veloce
– aggiornamento nelle industrie
– riutilizzo di sistemi esistenti
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
26
13
Es. Three-level architecture
II level
Solaris JDK 1.2
Apache Web Server
Session
Mgr
Agents
I level
W
e
b
S
e
r
v
e
r
Browser_i
Browser _k
Netscape,
Ms Explorer
Users DB
Itemns DB
NT JDK 1.2
ODBC driver
III level
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
27
Da JDBC ad Access
JDBC API
Driver JDBC - ODBC
ODBC di Microsoft Access
Microsoft Access
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
28
14
JDBC
• Interfaccia di programmazione Java per la
connessione e l’uso di database
• Permette di scrivere un’interfaccia SQL unica per
i principali DB: Oracle, MS Access, Sybase, ...
• Sfrutta la security di Java e quella del database
attraverso lo specifico driver
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
29
Architettura di JDBC
Applicazione
Driver Manager
DB Specific
Driver
Connection
01/03/00
DB Specific
Driver
Connection
Statement
Statement
ResultSet
ResultSet
Aspetti avanzati dell’uso di Java in ambienti distribuiti
30
15
Connessione al Web:
Servlet e Web Server
Sistemi monolitici (mainframe e terminali)
Sistemi client-server (PC e workstation)
3-level architecture (Browsers, Web Server
con servlets, DataBase)
01/03/00
Aspetti avanzati dell’uso di Java in ambienti distribuiti
31
CANTIERE MULTIMEDIALE TELECOM
SERVIZI TELEMATICI ADATTATIVI
http://www.di.unito.it/~seta
16
The System Architecture
Usrs
DB Mgr
Stereotype
KB
UM-i
Prod
Taxonomy
Personal
Agent
UMC
Dialog
Context
Extractor
Extr
Context-i
Users DB
Session
Mgr
Dialog Mgr
Cart
Bag
Mgr
Items
DBMgr
01/03/00
W
e
b
S
e
r
v
e
r
Items DB
Aspetti avanzati dell’uso di Java in ambienti distribuiti
33
KQML-like messages
Users DB
tell
ask-1
ItemsDB
01/03/00
te
as ll
k1
ask-all
tell
W
e
b
tell
tell
Session
Mgr
tell
tell
Items
DBMgr
Dialog Mgr
tell
delete
insert
ask-1
tell
ask-all
Extractor
ask-1
tell Personalization Agent
ask-1
UMC
tell
insert
Usrs DB Mgr
S
e
r
v
e
r
Bag Mgr
Aspetti avanzati dell’uso di Java in ambienti distribuiti
34
17