Università degli Studi di Pisa
FACOLTÀ DI INGEGNERIA
Corso di Laurea Specialistica in Ingegneria Informatica
Progetto e realizzazione di un'interfaccia Web per un servizio di consistenza su architetture Grid
Candidato:
Emanuele Fambrini Relatori:
Andrea Domenici Cinzia Bernardeschi Gianni Pucciani
Anno Accademico 20062007
ii
A Marta, Papà, Mamma e Samuele
Indice
1 Introduzione 1
1.1 Struttura dei capitoli . . . . 2
2 Grid Computing 5 2.1 The Grid . . . . 5
2.1.1 Utilizzi . . . . 5
2.2 Organizzazioni Virtuali . . . . 6
2.3 Architettura della Griglia . . . . 7
3 CONStanza: un Replica Consistency Service per Grid 9 3.1 La consistenza dei dati nei sistemi Grid . . . . 9
3.1.1 Replica Sincrona . . . . 10
3.1.2 Replica Asincrona . . . . 11
3.2 Il Servizio di Consistenza CONStanza . . . . 12
3.2.1 L'architettura di CONStanza . . . . 13
3.2.2 Progetto e Implementazione . . . . 14
3.3 Metodi Remoti . . . . 15
3.3.1 Il subpackage Comm . . . . 15
3.3.2 Il subpackage Client . . . . 16
4 Interfaccia Web 17 4.1 Cenni Storici . . . . 17
4.2 Dal Web Statico ai Contenuti Dinamici . . . . 18
4.2.1 Limiti dei contenuti statici . . . . 18
4.3 Common Gateway Interface . . . . 19
4.3.1 I limiti della CGI . . . . 20
4.4 Java Servlets . . . . 20
4.4.1 Svantaggi delle Servlets . . . . 21
5 Java Server Pages 23 5.1 Vantaggi delle JSP . . . . 23
iii
iv INDICE
5.2 Funzionamento delle JSP . . . . 24
5.3 Struttura . . . . 24
5.3.1 Direttive . . . . 25
5.3.2 Informazioni statiche . . . . 26
5.3.3 Elementi di scripting . . . . 26
5.3.4 Azioni . . . . 28
5.4 Utilizzo dei JavaBeans . . . . 29
5.4.1 Expression Language . . . . 30
6 Servizi Web 33 6.1 Caratteristiche dei servizi web . . . . 33
6.2 Architettura dei servizi web . . . . 34
6.2.1 Operazioni . . . . 35
6.2.2 Ruoli nell'architettura dei servizi web . . . . 35
6.3 Lo stack dei servizi web . . . . 35
6.3.1 Livello discovery . . . . 36
6.3.2 Livello description . . . . 36
6.3.3 Livello packaging . . . . 36
6.3.4 Livello transport . . . . 37
6.3.5 Livello network . . . . 37
6.3.6 Standard e Protocolli utilizzati dai servizi web . . . . . 37
6.4 XML . . . . 37
6.4.1 Principali dierenze tra XML e HTML . . . . 38
6.4.2 Principali caratteristiche . . . . 38
6.5 SOAP . . . . 38
6.5.1 Scambio di messaggi SOAP . . . . 39
6.5.2 Il messaggio SOAP . . . . 40
6.6 WSDL . . . . 40
6.6.1 Client Stub . . . . 42
6.6.2 Server Stub . . . . 42
6.7 Il servizio web CONStanza . . . . 42
7 Generazione automatica della descrizione WSDL 43 7.1 gSOAP . . . . 43
7.2 Caratteristiche . . . . 44
7.3 Uso di gSOAP . . . . 45
7.3.1 Uso del parser wsdl2h . . . . 45
7.3.2 Uso del compilatore soapcpp2 . . . . 46
7.4 Generazione della descrizione WSDL . . . . 46
7.4.1 Considerazioni sui namespace . . . . 46 7.4.2 Descrizione WSDL dei metodi remoti di CONStanza . 48
INDICE v
7.5 Analisi della descrizione WSDL . . . . 49
7.6 Livello astratto . . . . 51
7.6.1 Tipi . . . . 51
7.6.2 Messaggi . . . . 52
7.6.3 Operazioni . . . . 53
7.6.4 Porte astratte . . . . 53
7.7 Livello concreto . . . . 54
7.7.1 Binding . . . . 54
7.7.2 Porte e Servizi . . . . 56
8 Creazione di clienti Java per un servizio Web C++ 57 8.1 RMI . . . . 57
8.2 JAX-RPC . . . . 58
8.3 Axis . . . . 59
8.4 Architettura di Axis . . . . 60
8.4.1 Usi di Axis . . . . 61
8.5 Messa in opera di un servizio Web . . . . 61
8.5.1 Web Service Deployment Descriptor . . . . 62
8.6 Axis e WSDL . . . . 62
8.6.1 Stile dei servizi . . . . 63
8.6.2 Utilizzatore del servizio . . . . 63
8.7 WSDL2Java . . . . 64
8.8 Sorgenti creati da WSDL2Java . . . . 67
8.8.1 Port Types . . . . 67
8.8.2 Holders . . . . 68
8.8.3 Bindings . . . . 69
8.8.4 Services . . . . 70
8.8.5 Utilizzo delle classi generate . . . . 72
9 Contenitori Web 73 9.1 Il contenitore di Servlet e JSP . . . . 73
9.1.1 Servlet Container . . . . 74
9.1.2 JSP Container . . . . 74
9.1.3 Tipi di contenitori . . . . 76
9.2 Apache Tomcat . . . . 76
9.3 Architettura di Tomcat . . . . 78
9.3.1 Tomcat . . . . 79
9.3.2 Servizio . . . . 79
9.3.3 Connettori . . . . 79
9.3.4 Motore . . . . 79
9.3.5 Valvole . . . . 80
vi INDICE
9.3.6 Host . . . . 80
9.3.7 Contesto . . . . 80
9.4 Struttura di un'applicazione Web . . . . 80
9.4.1 Struttura dell'applicazione Web per CONStanza . . . . 82
10 Progettazione 83 10.1 Architettura delle applicazioni . . . . 83
10.1.1 Confronto con l'architettura three-tier . . . . 83
10.1.2 Modello 1 . . . . 84
10.1.3 Modello 2 . . . . 85
10.1.4 Funzionamento . . . . 86
10.1.5 Vantaggi e Svantaggi . . . . 87
10.2 Analisi e specica dei requisiti . . . . 87
10.2.1 Tipologia utente . . . . 87
10.2.2 Denizione dei requisiti funzionali dell'utente . . . . 87
10.2.3 Specica dei requisiti funzionali dell'utente . . . . 87
10.3 Struttura dei Packages . . . . 89
10.4 Package Grcs . . . . 89
10.5 Package Lrcs . . . . 93
10.6 Struttura architetturale . . . . 94
10.6.1 JavaBeans . . . . 95
10.7 Pagine JSP . . . . 99
10.8 Pagine di Controllo . . . . 100
10.8.1 Librerie di Tag . . . . 102
10.8.2 Form HTML . . . . 103
10.9 Pagine di Vista . . . . 104
10.9.1 Visualizzazione del risultato attraverso EL . . . . 106
11 Sicurezza 109 11.1 Sicurezza: terminologia . . . . 109
11.1.1 Segretezza . . . . 109
11.1.2 Integrità . . . . 110
11.1.3 Autenticazione . . . . 110
11.1.4 Certicati X.509 . . . . 110
11.2 Sicurezza nelle Grid . . . . 112
11.3 Grid Security Infrastructure . . . . 113
11.3.1 GSS-API . . . . 113
11.3.2 Funzionalità . . . . 114
11.4 Sicurezza a livello di trasporto e sicurezza a livello di messaggio114 11.5 Autenticazione . . . . 115
11.6 Autorizzazione . . . . 116
INDICE vii
11.6.1 Autorizzazione lato server . . . . 116
11.6.2 Autorizzazione lato client . . . . 116
11.7 Delega . . . . 117
11.8 Proxy Certicate . . . . 117
11.8.1 Uso dei certicati proxy . . . . 117
11.9 GSI in CONStanza . . . . 118
11.10Cliente Java sicuro . . . . 118
11.10.1 Commodity Grid . . . . 118
11.10.2 GsiPort . . . . 119
11.10.3 Lettura del certicato proxy . . . . 119
11.10.4 Acquisizione delle credenziali . . . . 120
11.10.5 Inizializzazione del protocollo HTTPG . . . . 121
11.10.6 Congurazione della sicurezza a livello di trasporto . . 121
11.11Sicurezza tra browser e Tomcat . . . . 122
11.11.1 SSL . . . . 123
A Client CLI 125 B Metodi remoti cliente GRCS 127 C Metodi remoti cliente LRCS 131 D Descrizione WSDL del metodo getStatus 133 E Albero delle directory dell'applicazione Web constanza 137 F Sottopackages Grcs e relative classi 139 G Packages Lrcs e relative classi 143 H Pagine JSP relative ai metodi del GRCS 145 I Pagine JSP relative ai metodi del LRCS 147 J Manuale utente 149 J.1 Installazione . . . . 149
J.2 Congurare Tomcat . . . . 150
J.3 Congurare il browser . . . . 151
J.4 Pagina iniziale . . . . 151
J.5 Creazione Proxy . . . . 153
J.6 Convalida dei dati . . . . 153
J.7 GRCS User Interface . . . . 153
viii INDICE
J.7.1 Set Quorum . . . . 153
J.7.2 Get Quorum . . . . 157
J.7.3 Get Stat . . . . 157
J.7.4 Get Protocol . . . . 158
J.7.5 Subscribe File . . . . 159
J.7.6 Complete Ops . . . . 159
J.7.7 Complete Op . . . . 160
J.7.8 Print DFD Container . . . . 160
J.7.9 Private Master . . . . 161
J.7.10 Create Replica . . . . 163
J.7.11 Fetch Master Replica . . . . 164
J.7.12 Update File . . . . 166
J.7.13 Update DataBase . . . . 167
J.7.14 List Replicas . . . . 168
J.7.15 List LRCS server . . . . 169
J.7.16 Subscribe Logical Database . . . . 170
J.7.17 Unsubscribe Logical Dataset . . . . 171
J.7.18 Unsubscribe LRCS . . . . 172
J.8 LRCS User Interface . . . . 172
J.8.1 Get Stat . . . . 172
J.8.2 Remove Watcher . . . . 173
J.8.3 Restart Watcher . . . . 174
J.8.4 Set Grcs . . . . 175
J.8.5 Stop Watcher . . . . 177
J.8.6 LRCS Subscribe . . . . 177
J.8.7 Subscribe DataBase Replica . . . . 178
J.8.8 LRCS Unsubscribe . . . . 179
J.8.9 LRCS Unsubscribe DataBase Replica . . . . 180
Bibliograa 195