Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/...
Transcript of Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/...
![Page 1: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/1.jpg)
1[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Framework di sviluppo Java EEe il progetto Spago
Testimonianza di:Gianfranco Boccalon
![Page 2: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/2.jpg)
2[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Argomenti del Corso
� Introduzione al framework Spago: scopo, funzionalità, architettura
� Modulo di Dispatching
� Modulo di Presentation
� Modulo di accesso ai dati
� Servizi trasversali
![Page 3: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/3.jpg)
3[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Architettura di riferimento
• Architetture MVC
– Model-View-Controller è il design pattern architetturaleraccomandato dalle linee guida di Sun Microsystems per implementare applicazioni interattive
• Architetture a servizi (SOA)
– In cosa consistono, quando sono vantaggiose, come implementarle
– Uno degli standard: SOAP
![Page 4: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/4.jpg)
4[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Architettura MVC
Tale modello comporta la separazione di ogni applicazione in 3 componenti principali
![Page 5: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/5.jpg)
5[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Obiettivi Architettura MVC
La separazione della logica di business dalla presentazioneporta i seguenti vantaggi:
1. Minimizza gli impatti dei cambiamenti
2. Aumenta la manutenibilità
3. Indipendenza dal client e riuso del codice
4. Separazione dei ruoli degli sviluppatori
![Page 6: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/6.jpg)
6[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Una visione d'insieme
• Cos’è un framework
– Framework infrastrutturali: Spago– Framework di persistenza: Hibernate– Framework di templating: JET
• Strumenti di sviluppo
– IDE : Eclipse, WSAD
– Application Server: Tomcat, WebSphere Application Server, JBoss Application Server
– Versioning: SubVersion
![Page 7: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/7.jpg)
7[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Una visione d’insieme
ClientWeb
Server
Application Server
Applicazione/Servizi Applicativi
Spago
Hibernate
JDBC
Logging Gestione errori
Monitoring
Navigazione
Presentazione
Paginazione
Database
![Page 8: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/8.jpg)
8[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Introduzione ai Framework
• COS’E’ UN FRAMEWORK
Un framework è un’applicazione “semi-completa”,
riutilizzabile che può essere specializzata per produrre
applicazioni specifiche
• VANTAGGI
– Modularità
– Riusabilità
– Estensibilità
– Inversione del Controllo
![Page 9: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/9.jpg)
9[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Spago
• DEFINIZIONE:
SPAGO è un framework J2EE, sviluppato secondo il pattern
architetturaleMVC , che fornisce una soluzione per lo
sviluppo di applicazioni “multicanale/multiprotocollo” e
l’integrazione di servizi.
Consente lo sviluppo di applicazioni Web, l’integrazione con
infrastrutture esistenti e la pubblicazione di servizi su canali
diversi.
![Page 10: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/10.jpg)
10[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Esistono molti framework Open Source per lo sviluppo di applicazioni Web, alcuni dei quali molto specializzati su determinate fasi dello sviluppo (disegno dell’interfaccia grafica, sviluppo della logica di business, etc).
Confronto con altri framework
JavaServerFaces
![Page 11: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/11.jpg)
11[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
� L’evoluzione di Spago è inoltre indotta dai nuovi progetti che ne faranno uso (il primo è SpagoBI, una piattaforma per la Business Intelligence)
� Esiste una roadmap evolutiva di Spago sul sito
http://spago.eng.it
Il futuro di Spago
![Page 12: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/12.jpg)
12[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Punti di forza di Spago
1. Multicanalità
2. Rende immediata la pubblicazione dei servizi tramite SOAP
3. Modalità di dispatching a moduli (modalità piu' complessa di
quella ad action ma che consente grande flessibilità ed elevato
potenziale di riutilizzo del codice)
![Page 13: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/13.jpg)
13[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
4. Gestore della navigazione: semplifica la gestione dellanavigazione
6. Paginazione: moduli di gestione della paginazione
7. XML : oggetti per la gestione efficiente di dati in formatoXML
8. Validazione: servizio server side di validazione dei dati
Punti di forza di Spago
![Page 14: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/14.jpg)
14[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Architettura di Spago
![Page 15: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/15.jpg)
15[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Dispatching dellarichiesta (Controller)
Adapter• Riceve i dati della richiesta da uno specifico canale• Converte i dati delle richieste nel formato interno del
framework (XML)• Attiva il servizio;
Dispatcher• Identifica la modalità di esecuzione della logica
di business fra quelle supportate e ritorna il corretto coordinatore
Coordinator• Coordina l’esecuzione della logica di business
secondo una specifica modalità.
![Page 16: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/16.jpg)
16[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
DEFINIZIONE:
Per Multicanalità (in termini di device) si intende la capacità di
un’applicazione di ricevere richieste attraverso più canali
(quali Browser web, telefono cellulare WAP ecc.) e di
presentare il contenuto della risposta in modo coerente con il
canale attraverso il quale è stata effettuata la richiesta.
Pubblicazione multicanale(Adapter)
![Page 17: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/17.jpg)
17[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Un’applicazione J2EE, sviluppata con Spago, può erogare i
suoi servizi su più canali (device) come HTTP e WAP, e
attraverso più protocolli: HTTP, SOAP, EJB, JMS.
1. Le richieste possono provenire da più canali (web browser,
mobile wap browser, etc)
2. La logica applicativa è indipendente dal contesto
3. La pubblicazione delle informazioni è coerente con il canale
attraverso il quale è pervenuta la richiesta
Pubblicazione multicanale(Adapter)
![Page 18: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/18.jpg)
18[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Multicanalità - Schema
Multiprotocol Adapters
Multidevice Adapters
![Page 19: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/19.jpg)
19[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Architettura aperta
• L’architettura è aperta e permette di aggiungere nuovi canali oltre a quelli già implementati:
• Canali implementati
o HTTP/WAP
o SOAP
o EJB
o JMS
o JBI
o Portlet
![Page 20: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/20.jpg)
20[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Modulo Security Manager
Personalizzazioni del Framework� Modulo “Security Manager”
Verifica i privilegi di esecuzione della logica applicativa associata ad un oggetto di business. La verifica delle autorizzazioni può essere abilitata su tutti gli oggetti di business o solo su alcuni di questi.
![Page 21: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/21.jpg)
21[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Strumenti di supporto(SourceBean)
• Alla base di tutto il framework c’è l’XML, tutti i sottosistemi
di Spago comunicano tramite Flussi XML
• Il SourceBean è l’oggetto che in Spago rappresenta i flussi
XML
• Ha capacità di navigazione con notazioni puntate.
![Page 22: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/22.jpg)
22[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esempio: il SourceBean
<OUTER param3="value3">
<INNER param1=“value1" param2="value2“>
</INNER>
<INNER param1=“value3" param2="value4“>
</INNER>
</OUTER>
Una volta letto il frammento XML in un SourceBean èpossibile, ad esempio, accedere a tutte le buste con chiave “INNER” tramite Statement
List inners = sourceBean.getAttributeAsList(“INNER”);
String param3 = (String) outer.getAttribute(“param3”);
![Page 23: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/23.jpg)
23[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Modalità di dispatching
1. Action
Un singolo Oggetto di business per evadere la richiesta.
2. Moduli
Più oggetti di business che collaborano tra loro per evadere la richiesta.
E’ una modalità più complessa di quella ad Action, ma ha un alto potenziale di riuso dei moduli.
![Page 24: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/24.jpg)
24[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Modalità Action
1. Oggetti di business di questo tipo evadono per intero la
richiesta del servizio
2. Esiste una corrispondenza univoca tra servizio e oggetto di
business, mentre lo stesso oggetto di business può essere
usato per evadere più richieste.
3. Ogni action è caratterizzata da uno scope che può essere:
a) Request: istanzia nuova action ad ogni richiesta;
b) Session: nella stessa session viene usata stessa istanza;
c) Application: tutte le richieste indirizzate al medesimo
container (JVM), viene usata stessa istanza;
![Page 25: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/25.jpg)
25[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Esistono due modalità di implementazione:1. Implementare
ActionIFace2. Estendere
AbstractAction
In ogni caso è necessarioImplementare il metodo“service”:void service (SourceBean serviceRequest, SourceBean
serviceResponse)throws Exception;
Modalità Action
![Page 26: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/26.jpg)
26[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Metodo “service”
• La logica di business è implementata nel metodo
void service (SourceBean serviceRequest, SourceBean serviceResponse) throws Exception;
• Tutte le action devono implementarlo
• Parametri del metodo:
– serviceRequestper accedere ai parametri della richiesta
– serviceResponseper valorizzare la risposta
![Page 27: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/27.jpg)
27[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Censimento Action
• Censimento di una action nel file “actions.xml”
<?xml version="1.0" encoding="ISO-8859-1"?><ACTIONS>
<ACTION name="LISTA_UTENTI_ACTION" class= "it.eng.spago.demo.action.ListaUtentiAction"
scope="REQUEST"><CONFIG pool="afdemo" title="Lista Utenti" rows="2">
………………</CONFIG>
</ACTION> </ACTIONS>
• Nella sezione “config” possono essere censite informazioni utilizzabili in fase di inizializzazione della action. Ovvero nel motodo “init” della action
![Page 28: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/28.jpg)
28[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Modalità Moduli
1. Ogni module è un oggetto di business che collabora con altri per evadere la richiesta di un servizio
2. Tutti i module che collaborano tra di loro per lo stesso servizio formano un unità logica chiamata “Page”
3. La risposta del servizio è rappresentata dall’unione delle risposte di tutti i module
4. L’ordine e le condizioni sotto le quali i module vengono invocati è descritto tramite un “workflow”
![Page 29: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/29.jpg)
29[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Modalità Moduli
• La risposta ad una richiesta di servizio viene evasa da piùmoduli tra loro cooperanti e organizzati in un’unità logica chiamata PAGE.
• Una pagina è una composizione logica di moduli ovvero un grafo che specifica in che sequenza vanno invocati i moduli e con che parametri
• Il punto di inizio valutazione del grafo è la pagina
• I moduli vengono invocati nel seguente ordine:modulo1, modulo2, modulo3, modulo4.
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
![Page 30: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/30.jpg)
30[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Dispatching: Modalità Moduli
Esistono due modalità di
implementazione :
1. ImplementareModuleIFace
2. EstendereAbstractModule
In ogni caso è necessario
implementare il metodo
“service”
![Page 31: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/31.jpg)
31[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Censimento Moduli
• Censimento dei moduli nel file “modules.xml”
<?xml version="1.0" encoding="ISO-8859-1"?>
<MODULES>
<MODULE name="ModuloCliente" class="it.eng.spago.demo.module.ModuloCliente"/>
<MODULE name="ModuloFornitore" class="it.eng.spago.demo.module.ModuloFornitore"/>
</MODULES>
• Non è necessario definire lo scope in quanto ereditano quello della pagina in cui sono inclusi
![Page 32: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/32.jpg)
32[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Censimento Pagine
La definizione della struttura della pagina è censita nel file pages.xml”
<PAGES><PAGEname="Pagina1" scope="SESSION"><MODULES>
<MODULE name="Modulo1"/><MODULE name="Modulo2“ keep_response =“false”/><MODULE name="Modulo3"/><MODULE name="Modulo4“ keep_istance=“true”/>
</MODULES><DEPENDENCIES>
<DEPENDENCEsource="Pagina1" target="Modulo1"><CONDITIONS/><CONSEQUENCES/>
</DEPENDENCE><DEPENDENCEsource="Pagina1" target="Modulo3">
<CONDITIONS/><CONSEQUENCES/></DEPENDENCE><DEPENDENCEsource="Modulo1" target="Modulo2">
<CONDITIONS/><CONSEQUENCES/></DEPENDENCE><DEPENDENCE source="Modulo3" target="Modulo4">
<CONDITIONS/><CONSEQUENCES/></DEPENDENCE>
</DEPENDENCIES></PAGE></PAGES>
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
Pagina1
Modulo1
Modulo3
Modulo2
Modulo4
![Page 33: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/33.jpg)
33[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Condizioni
• Ogni busta “<dependence>” rappresenta un arco
• La busta “<conditions>” consente di definire in quali casi un modulo deve essere invocato, tutte le “<conditions>” devono essere verificate affinché venga invocato un modulo
<CONDITIONS>
<PARAMETER name="nome parametro"
scope="USER | ADAPTER_REQUEST | SERVICE_REQUEST | SESSION | APPLICATION | ADAPTER_RESPONSE | SERVICE_RESPONSE | ERROR"
value=" AF_DEFINED | AF_NOT_DEFINED | ..."/>
</CONDITIONS>
![Page 34: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/34.jpg)
34[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Conseguenze
• Sono i parametri aggiuntivi che vengono passati da un modulo al modulo target, consentono la cooperazione tra moduli
<CONSEQUENCES>
<PARAMETER name="nome parametro“ type="ABSOLUTE | RELATIVE “ scope=" USER | ADAPTER_REQUEST| SERVICE_REQUEST| SESSION | APPLICATION | ADAPTER_RESPONSE| SERVICE_RESPONSE"
value="valore parametro"/></CONSEQUENCES>
• L’accesso ai parametri definiti nelle consequencies avvienetramite il SourceBean della richiesta
void service(SourceBean serviceRequest, SourceBean serviceResponse) throws Exception {
String param = serviceRequest.getAttribute(“user”); …….
![Page 35: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/35.jpg)
35[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Considerazioni
�Consente riuso componenti
��Validazione dei dati
�Flessibile e potente
�Semplice da implementare
ModuliActionVantaggi
![Page 36: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/36.jpg)
36[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Logica di presentazione
• I contenuti prodotti dalla logica di business vengono rediretti
al modulo di view che gestisce la pubblicazione
• La scelta della vista corretta in base al canale, ai parametri di
risposta allo stato dell’applicazione è censita come parametro
di configurazione
• Se non è stato configurato nessun publisher viene ritornata al
client la rappresentazione XML dei contenuti
![Page 37: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/37.jpg)
37[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Presentazione
Il framework consente di scegliere tra diverse modalità di presentazione dei dati:
• XML/XSLT
• JSP
• Servlet
• Java
• Loop
• Nessuna
Non tutti le modalità sono adatte a gestire la pubblicazione per tutti i canali
![Page 38: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/38.jpg)
38[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Tabella modalità validein base al canale
Nome degli XSL da applicare“0,1,2,…”XSL
Nome degli XSL da applicare“0,1,2,…”XSL
Nome servlet0SENDREDIRECT
Nome jsp0FORWARDJSP
Nome degli XSL da applicare“0,1,2,…”XSL
0NOTHINGEJB
Nome jsp0SENDREDIRECT
0NOTHINGSOAP
Nome degli XSL da applicare“0,1,2,…”XSL
Nome servlet0SENDREDIRECT
0NOTHINGJMS
Nome degli XSL da applicare“0,1,2,…”XSL
Nome jsp0SENDREDIRECT
Nome servlet0FORWARDSERVLET
0NOTHINGWAP
Parametri della nuova richiesta0LOOP
Nome jsp0FORWARDJSP
Nome servlet0FORWARDSERVLET
0NOTHINGHTTP
resourceProgMode TypeChannel
![Page 39: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/39.jpg)
39[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Configurazione
Per pubblicare la risposta, bisogna associare la action o la page, che implementa il servizio, al corrispondente publisher nel filepresentation.xml
<PRESENTATION><MAPPING
business_name="LIST_USERS_ACTION"business_type="ACTION"publisher_name="ListUsersAction"/>
……………<PRESENTATION>
![Page 40: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/40.jpg)
40[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Configurazione, continua
Gli oggetti di pubblicazione sono definiti nel file publishers.xml. <PUBLISHERS>
<PUBLISHER name="ListUsersAction"><RENDERING channel="HTTP" type="XSL" mode="">
<RESOURCES><ITEM prog="0" resource=“
/WEB-INF/xsl/HTTPListUsersAction.xsl"/></RESOURCES>
</RENDERING><RENDERING channel="WAP" type="XSL" mode="">
<RESOURCES><ITEM prog="0" resource=“
/WEB-INF/xsl/WAPListUsersAction.xsl"/></RESOURCES>
</RENDERING></PUBLISHER>
![Page 41: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/41.jpg)
41[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Esempio: prerequisiti
• JDK 1.5.x download from http://java.sun.com
• Tomcat 5.5.X download from http://jakarta.apache.org/• Eclipse 3.2.0 download from http://www.eclipse.org/• WTP 1.5 download from http://www.eclipse.org/• Hsqldb 1.7.2 download from http://hsqldb.sourceforge.net
![Page 42: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/42.jpg)
42[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Cosa scaricare
Dal sito di ObjectWeb (http://forge.objectweb.org) bisognascaricare:
• La distribuzione binaria di Spago
![Page 43: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/43.jpg)
43[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Cosa scaricare
• I sorgenti di Spago
![Page 44: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/44.jpg)
44[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Cosa scaricare
• La documentazione di Spago
![Page 45: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/45.jpg)
45[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Cosa scaricare
Opzionale:
• Il plugin per Eclipse
• Gli esempi
![Page 46: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/46.jpg)
46[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
�Esempio:Configurazione progetto
Step 1) Installare il plugin per Spago in Eclipse
Step 2) Avviare Eclipse
Step 3)Creare un nuovo “Dynamic Web project” chiamato
“SpagoDemo”
Step 3) Dalla prospettiva “Java” invocare il comando “Add
Spago Nature” sul progetto
Step 4) Invocare il comando “Add Spago Tree” sul progetto
![Page 47: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/47.jpg)
47[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Esempio: deploy
Step 1)Selezionare la propettiva “Java”
Step 2)Installare l’applicazione configurando Tomcat 5.5.X
come server di default
Step 3)Avviare l’application server Tomcat appena configurato
Step 4)Aprire il browser e scrivere l’URL:
http://localhost:8080/SpagoDemoWeb/
![Page 48: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/48.jpg)
48[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi � Esempio: pubblicazione
Step 1) Creare la risorsa di pubblicazione (pagina JSP)
Step 2) Configurare il publisher nel file publisher.xml
Step 3) Associare l’action (o la page) con il publisher tramite ilfile presentation.xml
Step 4)Installare l’applicazione nel server
Modalità semplificata:
Step 1,2) Come I punti precedenti
Step 3) Configurare il nome del publisher direttamente nel file actions.xml
![Page 49: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/49.jpg)
49[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Servizi Trasversali
• Inizializzazione
• Tracing
• Gestione Errori
• Monitoring
• Gestione Configurazione
• Navigazione
• Gestione della sessione
• Paginazione
• Accesso ai dati
![Page 50: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/50.jpg)
50[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Inizializzazione
• Spago gestisce le attività di inizializzazione all’avviodell’applicazione
• I processi di inizializzazione sono definiti nel file initializer.xml
<INITIALIZERS>
<INITIALIZER class="it.eng.spago.dbaccess.DataAccessInitializer" config="" />
</INITIALIZERS>
• Tutti gli inizializzatori devono implementare l’interfacciaInitializerIFace
![Page 51: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/51.jpg)
51[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Tracing
Consente la memorizzazione su file dell’attività applicativa, ad
ogni messaggio viene associata una severity per gestire la
registrazione dei soli messaggi il cui livello è definito nel file
di configurazione “Tracing.xml”.
Spago mette a disposizione 2 logger
1. DefaultLogger
2. Log4JLogger
![Page 52: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/52.jpg)
52[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi DefaultLogger
Tale sistema consente di:
• Fare lo switch a un nuovo file a mezzanotte
• Specificare il livello minimo delle informazioni da tracciare
• Può tracciare sia stringhe che interi flussi XML
![Page 53: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/53.jpg)
53[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Log4JLogger
Tale sistema:
• Utilizza Log4J
Consente di:
• Registrare i log su destinazioni diverse
• Specificare il livello minimo delle informazioni da tracciare
• Può tracciare sia stringhe che interi flussi XML
![Page 54: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/54.jpg)
54[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Configurazione logger“Tracing.xml”
La configurazione del file di log viene effettuata tramite
l’impostazione di parametri nel file “tracing.xml”
<TRACING>
<LOGGER name="DEFAULT_LOGGER" class="it.eng.spago.tracing.DefaultLogger">
<CONFIG trace_min_log_severity="0" debug="true" trace_path="/demo/log/" trace_name="demo-" append="true" trace_thread_name="false" />
</LOGGER>
<LOGGER name=“Framework" class="it.eng.spago.tracing.DefaultLogger">
<CONFIG trace_min_log_severity=“4" debug=“false" trace_path="/demo/log/" trace_name=" framework-"/>
</LOGGER>
<TRACING>
![Page 55: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/55.jpg)
55[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Come utilizzare i Tracer
TracerSingleton.log(Constants.NOME_MODULO,
TracerSingleton.DEBUG,
"AdapterHTTP::service: …..");
TracerSingleton.log(Constants.NOME_MODULO,
TracerSingleton.DEBUG,
"AdapterHTTP::service: …..“,
exception);
![Page 56: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/56.jpg)
56[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Gestione degli errori
Il framework fornisce uno stack di errori ognuno dei quali è
caratterizzato da una severity e da una descrizione.
Una volta generato uno degli errori sopra descritti viene passato
al gestore degli errori “it.eng.spago.EMFErrorHandler”. Tale
gestore mantiene la lista degli errori generati per la richiesta del
servizio che può essere utilizzata dalla logica di presentazione.
<%@page extends“it.eng.spago.dispatching.httpchannel.AbstractHttpJspPage” %>
<%EMFErrorHandler errorHandler = getErrorHandler();
Collection errors = errorHandler.getErrors();%>
Viene inoltre fornita una tagLib che accede allo stack degli errori
<%af:error>
![Page 57: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/57.jpg)
57[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Tipologie di errori previsti
Tipologie di errori gestite dal framework:
• “it.eng.spago.error.EMFInternalError”
Viene usato per mappare errori di terze parti ad esempio una
SQLException, (può contenere un oggetto, purché
serializzabile)
• “it.eng.spago.error.EMFUserError”
E’ un errore di tipo applicativo o un messaggio di natura
informativa, contraddistinto da un codice identificativo, che
consente la catalogazione multilingua della descrizione
dell’errore.
![Page 58: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/58.jpg)
58[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi EMFInternalError
• Prodotto da componenti esterni al contesto
• Contraddistinti da una Severity, un messaggio, e unaeccezione nativa
• Di solito non vengono pubblicati
![Page 59: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/59.jpg)
59[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi EMFUserError
• Legati alla business logic o utilizzati per produrre messaggi
• Contraddistinti da una Severity, e un codice identificativo
• I messaggi sono definiti in un properties file
• Per messaggi dinamici si possono usare deiPlaceHolder
![Page 60: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/60.jpg)
60[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Monitoring: JAMon
Il prodotto Java Application Monitor “JAMon ” (disponibile al
sito http://www.jamonapi.com) è stato integrato all’interno
del framework per eseguire il profiling delle attività di
business di accesso ai dati e di presentazione.
![Page 61: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/61.jpg)
61[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Configurazione
Il Framework si basa su una serie di file di configurazione il cui elenco è censito nel file di configurazione indicato in web.xml
“web.xml”….<init-param>
<param-name>AF_CONFIG_FILE</param-name>
<param-value>\WEB-INF\conf\spago\master.xml</param-value>
</init-param> ….
“master.xml”<?xml version="1.0" encoding="ISO-8859-1"?>
<MASTER data_access_configuration_file_path="/WEB-INF/conf/spago/data_access.xml">
<CONFIGURATOR path="/WEB-INF/conf/spago/common.xml" />
<CONFIGURATOR path="/WEB-INF/conf/spago/dispatchers.xml" />
……
</MASTER>
![Page 62: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/62.jpg)
62[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Caricamento Configurazione
• La classe “ConfigSingleton” si occupa di caricare il file master.xml e tutti i file il cui path relativo sia in esso indicato.
• Nel caso in cui sia necessario un nuovo file di configurazione è sufficiente censirlo nel file “master.xml”
• ConfigSingleton è un SourceBean, quindi permette di accedere a tutte le informazioni presenti nel file.
• All’utente è trasparente il fatto che la configurazione sia memorizzata su più file
![Page 63: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/63.jpg)
63[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esempio File di configurazione
actions.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<ACTIONS>
<ACTION name="LISTA_UTENTI_ACTION“class="it.eng.spago.demo.action.ListaUtentiAction"
scope="REQUEST">
<CONFIG>
</CONFIG>
</ACTION>
</ACTIONS>
![Page 64: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/64.jpg)
64[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Accesso ai dati di configurazione
Tramite lo stesso configuratore è possibile accedere ad
informazioni presenti sui due diversi file riportati nella slide
precedente:
ConfigSingleton config = ConfigSingleton.getInstance();
SourceBean actionBean =
(SourceBean)config.getFilteredSourceBeanAttribute
("ACTIONS.ACTION","NAME",”LISTA_UTENTI_ACTION");
String actionClassName = (String) actionBean.getAttribute(“class”);
![Page 65: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/65.jpg)
65[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Navigazione
• Il framework mette a disposizione un’oggetto “Navigatore”che memorizza in uno stack le richieste ed è in grado di rispondere alla richiesta di un servizio di tipo Back
• Viene attivato impostando nell’url della richiesta determinate variabili
– NAVIGATOR_BACK_TO_MARK
– NAVIGATOR_BACK_TO_SERVICE …
• Fornisce inoltre due custom tag per la visualizzazione di una toolbar di navigazione:
– It.eng.spago.tags.DefaultNavigationToolbarTag
– It.eng.spago.tags.ComboNavigationToolbarTag
![Page 66: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/66.jpg)
66[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Navigazione
Considerate il seguente esempio:
![Page 67: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/67.jpg)
67[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Gestione Sessione
• SessionContainer: Oggetto che consente l’accesso ai dati presenti in sessione
• Es. recupero SessionContainer e informazioni in esso contenutepublic void service(SourceBean request, SourceBean response) {
RequestContainerrequestContainer = getRequestContainer();
SessionContainersessionContainer = requestContainer.getSessionContainer();
String userId = (String)sessionContainer.getAttribute("userId");
}
• L’oggetto SessionContainer implementa Serializable quindi la sessione può essere persistita su Data Base.
• L’oggetto SessionContainer può essere azzerato, tuttavia esiste un Container immune dai reset “PermanentContainer”
![Page 68: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/68.jpg)
68[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Multi-lingua
• Spago fornisce il supporto per la gestione multilinguadelleinterfacce utente
• Un catalogo per ciascuna lingua è definito nei properties file con il nome:
messages_languagecode_countrycode.properties
Esempi:messages_en_US.properties
messages_it_IT.properties
![Page 69: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/69.jpg)
69[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Messages.properties
• Ogni messaggio è contraddistinto da un codice alfanumerico.
EMPTY_LIST=List empty
10002=Delete successfully
• Il codice è utilizzato per istanziare l’oggetto EMFUserError
EMFUserError(String severity, Stringcode)
![Page 70: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/70.jpg)
70[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Come utilizzareunlinguaggio specifico
Vanno definiti nelpermanentContainerdella sessione i seguentiattributi:
� AF_LANGUAGE
� AF_COUNTRY
Esempio:
permanentContainer.setAttribute("AF_LANGUAGE", "it");
permanentContainer.setAttribute("AF_COUNTRY", "IT");
![Page 71: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/71.jpg)
71[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Accesso ai dati
• Il modulo di accesso ai dati fornito da Spago, aggiunge inoltre nuove funzionalità rispetto a quelle già fornite dal driver JDBC
• Tali funzionalità sono indipendenti dalla base dati.Questo consente di minimizzarelo sforzo nel caso in cui si renda necessario la migrazione ad una base dati diversa
• I risultati si possono trasformare in XML
![Page 72: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/72.jpg)
72[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Accesso ai dati: Funzionalità
1. Implementa lo standard SQL’92
2. Possibilità di utilizzare più database nella stessa applicazione
3. Indipendenza dal database
4. Indipendenza dal driver JDBC
5. Gestione di pool nativi e gestiti
![Page 73: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/73.jpg)
73[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Accesso ai dati: Funzionalità
6. Tutte le operazioni SQL effettuate all’esterno di unatransazione sono autocommittanti
7. Gestione manuale o automatica delle transazioni
8. Conversione automatica degli oggetti di tipo Date o Timestamp in String e viceversa
![Page 74: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/74.jpg)
74[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Gestione delle connessioni
Spago mette a disposizione la classe
“DataConnectionManager” che consente di:
• Creare e configurare pool;
• Fornire connessioni sui vari tipi di pool gestiti;
DataConnection dcDefault = DataConnectionManager.getInstance().getConnection();
DataConnection dcOracle = DataConnectionManager.getInstance().getConnection(“oracle”);
DataConnection dcDB2= DataConnectionManager.getInstance().getConnection(“DB2”);
……
dcDefault.close();
dcOracle.close();
dcDB2.close();
![Page 75: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/75.jpg)
75[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Configurazione Pool
I pool di connessioni sono censiti nel file “data_access.xml”
<DATA-ACCESS><DATE-FORMAT format="DD-MM-YYYY"/> <TIMESTAMP-FORMAT format="DD-MM-YYYY hh:mm:ss"/><CONNECTION-POOL connectionPoolName="demo"
connectionPoolFactoryClass="it.eng.spago.dbaccess.factory.OracleConnectionPoolDataSourceFactory" connectionPoolType="native"><CONNECTION-POOL-PARAMETER parameterName="connectionString" parameterValue="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:xxxx:XXX" parameterType=""/><CONNECTION-POOL-PARAMETER parameterName="jdbcDriver" parameterValue="oracle.jdbc.OracleDriver" parameterType=""/>
………………</CONNECTION-POOL>
<CONNECTION-MANAGER><REGISTER-POOL registeredPoolName="demo"/>
</CONNECTION-MANAGER></DATA-ACCESS>
![Page 76: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/76.jpg)
76[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Censimento Statement
Gli statements possono essere censiti nel file
“statements.xml”. L’accesso a tale file è possibile tramite
la classe “SQLStatements”String statement = SQLStatements.getStatement(“LISTA_UTENTI”);
Ecco un esempio di tale file:<?xml version=“1.0” encoding=“ISO-8859-1”?>
<statements>
<statement>
name=“LISTA_UTENTI”
query=“SELECT userid,nome,cognome FROM utenti ORDER BY userid”
< /statement>
</statements>
![Page 77: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/77.jpg)
77[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esecuzione di comandi SQL
//
// You’ve already obtained the DataConnection dc Object
//
String statement = SQLStatements.getStatement(“USERS_LIST”);
SQLCommand cmdSelect = dc.createSelectCommand(statement);
List inputParameter = new ArrayList();
parameters.add(dataConnection.createDataField(
“column_name”,
Types.VARCHAR,
paramStr));
DataResult dr = cmdSelect.execute(inputParameters);
![Page 78: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/78.jpg)
78[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Lettura del risultato
dataResult = sqlCommand.execute(parameters);
scrollableDataResult = (ScrollableDataResult)
dataResult.getDataObject();
ArrayList codiciTipoModuli = new ArrayList();
while (scrollableDataResult.hasRows())
{
DataRow dataRow = scrollableDataResult.getDataRow();
codiciTipoModuli.add(
dataRow.getColumn(S_CODTIPMOD).getStringValue());
} // while (scrollableDataResult.hasRows())
![Page 79: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/79.jpg)
79[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Validazione Dati
Spago fornisce un componente per la validazione server-side dei dati dalle seguenti caratteristiche:
• Opzionale
• Configurabile (sia per i moduli che per le action)
• Bloccante o non Bloccante
![Page 80: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/80.jpg)
80[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Tipi previsti dalla Validazione
1. Validazione Automatica dei tipi più comuni
2. E’ possibile implementare delle classi Java che effettuano delle validazioni custom
3. Template di validazione: è possibile creare dei template dei tipi di validazione
![Page 81: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/81.jpg)
81[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Template di Validazione
1. Definizione del template:<FIELD-VALIDATORS>
<FIELD-VALIDATOR fieldType="DATE1" fieldValidatorClass="it.eng.spago.validation.fieldvalidators.DateValidator">
<CONFIG maxLength="30">
<DATE-FORMAT dateFormat="dd/MM/yyyy"/>
</CONFIG>
</FIELD-VALIDATOR>
</FIELD-VALIDATORS>
![Page 82: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/82.jpg)
82[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Template di Validazione
2. Utilizzo del template:<SERVICE name="TEST_VALIDATION" type="ACTION">
<VALIDATION blocking="true" validators="">
<FIELDS>
<FIELD name="ABC" maxLength="30" type="DATE1" aliasAfterValidation="Data2"/>
<FIELD name="DEF" maxLength="30" type="DATE1" aliasAfterValidation="Data2"/>
</FIELDS>
</VALIDATION>
</SERVICE>
![Page 83: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/83.jpg)
83[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Validazione AutomaticaConfigurazione
<VALIDATIONS><SERVICE name="insertEmployee" type="ACTION"><VALIDATION blocking="true" validators=""><CONDITIONS>
<PARAMETER name="field1" scope="SERVICE_REQUEST" value="xxx" />
</CONDITIONS>
<FIELDS><FIELD name="field1" maxLength="10" mandatory="true" type="8" /><FIELD name="field2" maxLength="5" mandatory="false" type="6" />
</FIELDS></VALIDATION>
</SERVICE>……….
</VALIDATIONS>
![Page 84: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/84.jpg)
84[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Validatori Java
• Permettono di effettuare validazioni complesse
• Implementano l’interfaccia AbstractValidator:
– check(SourceBean request, EMFErrorHandler errorHandler)
Controlli formali
– validate(SourceBean request,
EMFErrorHandler errorHandler)
Controlli incrociati
![Page 85: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/85.jpg)
85[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Messaggi di Validazione
I messaggi degli errori di validazione sono personalizzabili in diversi modi:
1. E’ possibile cambiare i messaggi per tutti gli errori
2. E’ possibile modificare i messaggi d’errore solo per un specifico servizio
3. E’ possibile modificare i messaggi d’errore per uno specifico campo
![Page 86: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/86.jpg)
86[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Paginazione
L’oggetto “Paginatore” ha la responsabilità di paginarecollezioni di oggetti, delegando al programmatore la responsabilità di recuperarli
Spago fornisce 2 implementazioni del paginatore :
1. One-Shot2. with Cache
![Page 87: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/87.jpg)
87[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi One-shot
• L’intera collezione di elementi da visualizzare è reperita in un’unica soluzione e mantenuta in memoria
• La paginazione viene effettuata solo a livello di presentazione
• Soluzione semplice
• Possibili problemi di occupazione di memoria e di tempi di esecuzione
![Page 88: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/88.jpg)
88[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Con Cache
• La paginazione viene effettuata anche a livello di recupero dei dati, gestendo una “finestra” sui dati che vengono visualizzati
• I dati possono essere reperiti da qualunque datasource
• Più complessa da utilizzare
• Non ha problemi di tempi di esecuzione
• Più efficiente
![Page 89: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/89.jpg)
89[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Generazione Automaticadi liste e dettagli
• Spago implementa un meccanismo automatico per costruire una lista paginata
• Gli sviluppatori devono solo configurare alcuni file XML
• Le operazioni di rendering possono essere delegate sia ad alcuni tag di Spago che a tag implementati dall’utente
• Si possono utilizzare sia i moduli che le action
![Page 90: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/90.jpg)
90[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Integrazione consistemi di sicurezza
1. Spago fornisce le interfacce per l’integrazioni di sistemi esterni di profilatura
2. Spago fornisce un’implementazione di esempio basata su file di configurazione XML
In tutti i casi, la seguente interfaccia deve essere implementata:
it.eng.spago.security.IEngUserProfile
![Page 91: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/91.jpg)
91[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi IEngUserProfile
L’interfaccia IEngUserProfiledefinisce i metodi per accedere alle informazioni dell’utente:
� Identificatore utente� Attributi utente� Ruoli utente e funzionalità� Diritti di esecuzione di un’action o un modulo
![Page 92: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/92.jpg)
92[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Processo di Login
L’oggetto che implementa l’interfaccia IEngUserProfile, deve essere memorizzato nelPermanentContainer(in sessione) con uno specifico nome di attributo:
permanentContainer.setAttribute(
IEngUserProfile.ENG_USER_PROFILE, userProfile);
![Page 93: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/93.jpg)
93[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi
Funzionamento del modulodi Sicurezza
Spago verifica le autorizzazioni dell’utente ad ogni richiesta di servizio.
Se l’utente non ha i diritti di esecuzione sul servizio:
� Action: redirezione al publisher SECURITY_ERROR_PUBLISHER
� Moduli: il modulo non viene eseguito ma l’esecuzione della pagina prosegue
![Page 94: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/94.jpg)
94[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Riferimenti
� http://spago.objectweb.org� http://spago.eng.it� Mailing list: [email protected]� My address: [email protected]
![Page 95: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/95.jpg)
95[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esercitazioni
Le esercitazioni consistono nel contribuire, tramite invio di codice, a estensioni di Spago o correzioni di errori conosciuti.
Tutte le richieste di miglioramento e di correzione sono censitenel tracking system (JIRA) di Spago, a cui si accede previa registrazione (libera).
![Page 96: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/96.jpg)
96[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Tracking System
Il tracking system di Spago è accessibile all’URL http://spago.eng.it, sotto la voce Community->Tracker.
Il sito è accessibile dopo aver effettuato il login.
![Page 97: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/97.jpg)
97[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Tracking System
Nel tracking system sono censite tutte le richieste di miglioramento o di correzione. Non tutte le richieste sono oggetto delle esercitazioni.
![Page 98: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/98.jpg)
98[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esercitazioni
Le possibili esercitazioni sono censite sotto la voce Project Summary->Open, il che significa che sono chiari i requisiti ma non è ancora stata assegnata l’attività.
![Page 99: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/99.jpg)
99[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esercitazioni
Le possibili esercitazioni sono le seguenti:
• SPAGO-31: The method toXML of the SourceBean doesn't handle properly multivalue attributes (molto complessa)
• SPAGO-28: SourceBean should use JAXP to discover a SAX parser (mediamente complessa)
• SPAGO-15: Default Sql Mapper Class (mediamentecomplessa)
• SPAGO-16: Connection Pool definition: optional driver-version parameter (molto semplice)
![Page 100: Framework J2EE Spago - UniPDruffatti/docs/Framework_J2EE_Spago.pdf · 2007-06-01 · ruffatti/ [Framework Java EE e Spago] 1 Laurea Specialistica in Informatica Struttura e Configurazione](https://reader030.fdocumenti.com/reader030/viewer/2022040303/5e8f05ad45b0d701ee1ee44f/html5/thumbnails/100.jpg)
100[Framework Java EE e Spago]www.math.unipd.it/~ruffatti/
Laurea Specialistica in InformaticaStruttura e Configurazione di Sistemi Liberi Esercitazioni
Deve essere inviata la patch contenente il codice della contribuzione: la patch è un file di testo creato automaticamente che contiene le differenze tra il codice “ufficiale” e il codice contenente la contribuzione.Viene creata con gli strumenti dell’ambiente di sviluppo.
I commenti nella contribuzione devono essere in inglese.
Se possibile deve essere mantenuta la retrocompatibilità della contribuzione con il codice esistente sviluppato con Spago.