![]() |
CORSO DI JSP |
![]() |
Prima di entrare nel merito delle web application e web services realizzate con JSP e servlets su Tomcat
ci occorre fare una panoramica su cosa sia la piattaforma J2EE (JavaTM 2 Platform Enterprise Edition).
Applicazioni distribuite multilivello
Il concetto primario della piattaforma J2EE è il componente.
Def 1. Componente (component). Software funzionale autosufficiente che comunica con altri componenti.
I componenti J2EE si situano entro 4 livelli (tiers).
Immaginiamo che tali livelli risiedano su 3 macchine diverse (anche se possono coesistere in una stessa macchina):
il livello 1 risieda in una macchina CLIENT
i livelli 2 e 3 risiederanno in una macchina J2EE SERVER MACHINE
il livello 4 risidederà in un EIS Server.
Grosso modo possiamo pensare al CLIENT come al nostro PC, al J2EE SERVER come all'application Server in cui risiede, ad esempio, Tomcat e al EIS Server ad esempio come ad un Oracle Server (Fig. 1)
Fig. 1 - Applicazione multilivello
Livello CLIENTUn componente di un livello CLIENT può essere:
1) Un Web client si basa sulla presenza di un browser più una pagina dinamica o di una applet Java. Tutto il calcolo viene demandato ai livelli successivi.
2) Un Application client è una applicazione stand-alone che comunica in HTTP con i componenti del livello web/business. Essa pemette una interazione grafica con l'utente più ricca di quella che di solito si relizza in HTML (esempio: menu a tendina con selezione di più di una lettera). Oltre a questo generalmente l'application client realizza una buona parte di lavoro (o tutto) che di solito un web client demanda al livello Web (al J2EE server) comunicando direttamente con il livello logico di Business (Fig. 2)
Nel livello client sia i web client che gli application client si possono avvalere del supporto di JavaBeansTM (che tuttavia non vengono considerati componenti J2EE) che sono delle classi Java che comunicano con l'esterno tramite dei metodi set/get che servono per impostare i dati del calcolo e per leggere i risultati.
Fig. 2 - Differenza tra un web client e un application client
Web Client o Application Client?
Dipende...
| WEB | − | potente come capacità elaborativa, come GUI, come velocità. |
|---|---|---|
| + | distribuibile. In inglese si dice che è di più facile deployment. Letteralmente deployment significa
schieramento, lo possiamo intendere come qualcosa di molto simile a installazione o distribuzione. Forse la locuzione italiana che più si avvicina a questo uso di deployment è "posa in opera". Non devo installare software nel client (solo un browser e una Java Virtual Machine - se sono previste Applet). |
|
| APP | Le righe sopra, moltiplicate per (-1). |
Livello WEBQuando intendiamo parlare di questo livello, vuol dire che ci siamo già trasferiti in un server J2EE.
Un componente di un livello WEB può essere:
Fig. 3 - Livello web
Le servlet (1) sono delle classi Java compilate in bytecode ed eseguite nel server (server + applet); la loro funzione è quella di ricevere REQUEST e inviare RESPONSE.
Le pagine JSP (2) sono dei documenti di testo in cui esiste HTML statico e istruzioni JSP: il server J2EE processa il file e produce una servlet che viene compilata runtime ed eseguita.
Come i componenti di tipo client, anche i componenti del livello web (servlet e pagine JSP) possono fare uso di JavaBeans. Di solito si usano per gestire la comunicazione con il livello Business/EIS. Vedremo un esempio quando ci occuperemo specificatamente dell'integrazione con un database.
Per ciò che riguarda altre caratteristiche di questo livello (il server vero e proprio) dobbiamo prima parlare dei contenitori.
Livello BUSINESSIl livello business costituisce la logica che sta alla base dell'applicazione, ne è il punto fondamentale.
Per la complessità delle applicazioni che svilupperemo qui, il livello Web e Business non si distingueranno, per noi saranno la stessa cosa.
Possiamo comunque immaginare che questo livello contenga ad esempio la gestione di un e-shop, con tutte le funzioni di carrello, di catalogo, di servizio di pagamento e così via. I beans del livello business gestiscono la comunicazione tra livello business e livello EIS.
Tuttavia per vedere come si fa a sfruttare un bean per realizzare determinate funzioni, ne possiamo pensare uno che non fa esattamente questo (gestire la comunicazione col livello business) ma che per esempio disegna un form HTML.
Esempio: Progettare un JavaBean per disegnare elementi di una form HTML.
Fig. 4 - Livello business
Queste funzioni vengono sfruttate dalle servlet e dalle pagine JSP e sono realizzate tramite dei BEANS. In tutta la filosofia J2EE, si tratta di pensare di avere a che fare con dei mattoncini LEGO che possono essere riutilizzati.
I beans sono di tre tipi:
I JB che svilupperemo noi saranno quelli che ci permettono di modularizzare l'accesso al database (senza dover ripetere in ogni pagina JSP il codice per accedere a Oracle).
Livello EIS (Enterprise Information System)E' il livello di gestione dei dati, possiamo pensare ad un server Oracle o mySQL, oppure ad un sistema gestionale, come SAP.
Contenitori
Le funzionalità di ciascun componente è dovuta al fatto che esso viene sviluppato a partire da un substrato che fornisce le funzioni di base e l'interfaccia con esse. Questo substrato è detto contenitore (container).
Di fatto il contenitore di cui ci occuperemo è il servlet container, che per noi sarà Tomcat. Esso fornisce tutte le funzionalità di basso livello (allocazione di variabili, comunicazioni a livello TCP/IP, sicurezza, directory service etc.)
Anche al livello client c'è un container ed è il browser con un Java plug-in (applet container).
Fig. 5 - Vari tipi di contenitore
Packaging
Quando avremo scritto una applicazione, avremo costruito nel file system un archivio articolato in directory di file JSP, CSS, JPG etc. L'installazione su altri sistemi da quello di sviluppo (deployment) si fa normalmente ricorrendo ad un archiviazione compatta, che assomiglia molto al TAR (Tape ARchive) di Unix.
Una applicazione J2EE viene rilasciata in un file EAR (Enterprise ARchive).
Un file EAR è un Java ARchive con estensione .ear.
Un file EAR contiene moduli J2EE.
Un modulo J2EE è l'insieme di una o più componenti J2EE per lo stesso tipo di contenitore, più un descrittore di installazione dei componenti.
Un descrittore di installazione dei componenti è un file XML che descrive le impostazioni dell'installazione.
Esempio: la sintassi del comando jar è analog a quella di tar di Unix;
C:\Programmi\Apache Group\Tomcat 4.1\webapps>jar cvf magazzino1.jar magazzino1/ aggiunto manifesto aggiunta in corso di: magazzino1/(in = 0) (out= 0)(archiviato 0%) aggiunta in corso di: magazzino1/WEB-INF/(in = 0) (out= 0)(archiviato 0%) aggiunta in corso di: magazzino1/WEB-INF/classes/(in = 0) (out= 0)(archiviato 0%) aggiunta in corso di: magazzino1/WEB-INF/tlds/(in = 0) (out= 0)(archiviato 0%) aggiunta in corso di: magazzino1/WEB-INF/lib/(in = 0) (out= 0)(archiviato 0%) aggiunta in corso di: magazzino1/jsp/(in = 0) (out= 0)(archiviato 0%) aggiunta in corso di: magazzino1/jsp/login.jsp(in = 1756) (out= 839)(compresso 52%) ...
Nell'esempio viene creato un archivio JAR (che si può aprire sia da linea di comando, usando jar, che con il WinZip per
chi usa Microsoft Windows) di nome magazzino1.jar, che contiene la directory magazzino1/.
Al loro interno, i file ear possono contenere vari tipi di moduli che sono sempre degli archivi di tipo tar ma specializzati
ed organizzati per i tipo di contenuto (se si tratta di javaBeans, di codice jsp, eccetera).
Per creare un archivio JAR da una directory usare il comando:
c:\>jar cf archivio.jar *.class per comprimere in un file archivio.jar tutti i .class della directory attiva.
Per visualizzare il contenuto di un JAR utilizzare il comando:
c:\>jar tf archivio.jar
Vi sono quattro tipi di moduli J2EE:
Così organizzata, una applicazione multilivello può essere installata su qualsiasi server J2EE compliant in modo rapido ed indolore.