Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti.

Slides:



Advertisements
Presentazioni simili
XmlBlackBox La presentazione Alexander Crea 11 Aprile 2010 La presentazione Alexander Crea 11 Aprile 2010.
Advertisements

Unit à E4 Applet. Obiettivi Saper progettare e realizzare Applet Java allinterno di pagine HTML Comprendere le interazioni tra il browser e lapplet Saper.
Java Stream e File.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Costruttori e Distruttori
Applet Java.
Informatica Recupero debito quarto anno Terzo incontro.
PHP.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Web Services.
Java Enterprise Edition (JEE)
Le gerarchie di tipi.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
S.I.S.S.I.S. Catania 2002/03 LE APPLET JAVA Prof. D. Cantone Amuso Raffaele.
XmlBlackBox La presentazione Alexander Crea 7 Giugno 2010 La presentazione Alexander Crea 7 Giugno 2010.
Applet Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA Uff
1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
Introduzione al linguaggio Java
Overriding.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione dei Progetti Software 2 (a.a. 204/05) - Lezione 4 1 Il package java.awt Gestione dellI/O orientato alla grafica: le finestre Sviluppo di interfacce.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Un framework per il pattern MVC
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Sistemi Operativi GESTIONE DEI PROCESSI.
APPLICAZIONI WEB In questo corso impareremo a scrivere un'applicazione web (WA) Marco Barbato - Corso di Applicazioni Web – A.A
Elaborazione di Franco Grivet Chin
Struts. Framework open source per lo sviluppo di applicazioni web su piattaforma J2EE. Progetto inizialmente sviluppato come sotto-progetto di Apache.
Corso Java/J2EE per PM/software architect Struts 2
Corso Java/J2EE per PM/software architect Servlet
Struts. Framework open source per lo sviluppo di applicazioni web su piattaforma J2EE. Progetto inizialmente sviluppato come sotto-progetto di Apache.
Architettura Java/J2EE
Java base IV: Java e la programmazione O.O.
Programmazione in Java (8)
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Cosa è una applicazione distribuita?
Esame di Reti di Calcolatori LS Andruccioli Daniele
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Basi di Dati e Sistemi Informativi
Sistemi Informativi sul Web
Basi di Dati e Sistemi Informativi
Programmazione concorrente
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Applet ed HTML Fondamenti di Informatica Corso D.
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
Servlet e Java Server Pages
Java Enterprise Edition
Lezione 8.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
ESERCITAZIONE 12 ESERCIZIO 2 14/05/2014. Consegne 1/4 Definire la classe MyBufferedReader che estende la classe BufferedReader, implementando il metodo.
Analisi dettagliata e design
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Laboratorio di Servizi Web - servlet - Ardissono 1 Chiarimenti su Servlet Note aggiuntive su architettura di applicazione web che usa Servlet per gestire.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
TW Servlet Nicola Gessa. TW Nicola Gessa Introduzione alle servlet n Le servlet sono oggetti java che vengono caricati ed eseguiti dal web server all’interno.
1 Corso di Ingegneria del Web e Applicazioni A A Domenico Rosaci 20 – Web Applications – Servlet e JSP.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
Gestire i dati: download e salvataggio. L’importanza dei dati La quasi totalità delle applicazioni hala necessità di gestire varie funzionalità relative.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Socket programming in Java La realizzazione di un server in Java consente di scrivere una sola versione eseguibile su diverse piattaforme. Il linguaggio.
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Tecnologie lato Server: Servlet
Transcript della presentazione:

Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti da protocollo di comunicazione package javax.servlet.http: include classi e interfacce specifiche per uso di servlet con protocollo HTTP alcune classi e interfacce di javax.servlet.http estendono le rispettive di javax.servlet

Laboratorio di Servizi Web - servlet - Ardissono 2 Porzione di gerarchia delle classi - Servlet interface javax.servlet.Servlet init(ServletConfig c) service(ServletRequest req, ServleResponse res) destroy(), … altri metodi... abstract class javax.servlet.GenericServlet implements Servlet, ServletConfig, Serializable offre implementazione di interfaccia Servlet indipendente da protocollo di comunicazione (HTTP, …) abstract class javax.servlet.http.HttpServlet extends GenericServlet implements Serializable offre implementazione di interfaccia Servlet specifica per HTTP interface javax.servlet.ServletConfig mantiene dati di configurazione di servlet

Laboratorio di Servizi Web - servlet - Ardissono 3 javax.Servlet - Interface ServletConfig specifica metodi per accedere a parametri di configurazione di Servlet (es. database driver, costanti globali della Servlet, …) –public String getInitParameter(String name) restituisce valore di parametro di inizializzazione “name”, se esiste. Null altrimenti –public Enumeration getInitParameterNames() restituisce enumerazione di nomi dei parametri di inizializzazione della Servlet –public String getServletName() –...

Laboratorio di Servizi Web - servlet - Ardissono 4 javax.Servlet - Interface Servlet - I specifica metodi di gestione della Servlet –public void init(ServletConfig c) throws ServletException invocato da Web Container dopo aver istanziato Servlet inizializza variabili di Servlet (prima di accettare HTTP requests). Es: leggere dati di configurazione, registrare database driver, … –public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException invocato da Web Container ad ogni HTTP request (oggetto req contiene dati di richiesta, res contiene risposta) –public void destroy() invocato da Web Container prima di rimuovere istanza di Servlet (es: prima di shut down di web server, o se serve spazio di memoria, …)

Laboratorio di Servizi Web - servlet - Ardissono 5 javax.Servlet - Interface Servlet - II Offre anche metodi per accedere a informazioni generiche su Servlet e a oggetto ServletConfig (questi metodi sono usati nel codice delle classi da noi implementate che estendono le Servlet) –ServletConfig getServletConfig() restituisce oggetto ServletConfig di una Servlet –String getServletInfo() restituisce informazioni generali su Servlet (autore, data di creazione,...)

Laboratorio di Servizi Web - servlet - Ardissono 6 javax.Servlet.http - abstract class HttpServlet - I –public void service(ServletRequest req, ServleResponse res) implementa metodo service di GenericServlet. Fa cast di ServletRequest/ServletResponse ad HttpServiceRequest/HttpServiceResponse e invoca metodo service protected. Non ridefinire!! –protected void service(HttpServletRequest req, HttpServleResponse res) invoca req.getMethod per sapere se è GET, POST, HEAD, … e delega gestione a metodo doXXX specifico…. Non ridefinire!!!

Laboratorio di Servizi Web - servlet - Ardissono 7 javax.Servlet.http - abstract class HttpServlet - II –protected void doGet(HttpServletRequest req, HttpServleResponse res) gestisce HTTP request di tipo GET. Ridefinibile –protected void doPost(HttpServletRequest req, HttpServleResponse res) gestisce HTTP request di tipo POST. Ridefinibile –protected void doHead(HttpServletRequest req, HttpServleResponse res) gestisce HTTP request di tipo HEAD. Ridefinibile –...

Laboratorio di Servizi Web - servlet - Ardissono 8 Invocazione di Servlet Web container Web server Web browser POST HTTP HttpServlet Invoca metodo pubblico service di Servlet service(req, res) service (protected) fa cast di parametri e invoca doXXX(req, res) doXXX gestisce richiesta Ridefinendo metodi doXXX integriamo logica applicativa in funzionalità offerte da web server NB: metodo service eseguito in thread di processo principale  gestione parallela di richieste, ma leggera

Laboratorio di Servizi Web - servlet - Ardissono 9 Porzione di gerarchia delle classi - Request Interface javax.servlet.ServletRequest offre metodi per accedere a connessione client input stream associata a connessione supporta lettura di dati da input stream interface javax.servlet.http.HttpServletRequest offre implementazione di ServletRequest specifica per HTTP InputStream ServiceInputStream

Laboratorio di Servizi Web - servlet - Ardissono 10 Porzione di gerarchia delle classi - Response Interface javax.servlet.ServletResponse offre metodi per accedere a connessione client output stream associata a connessione supporta scrittura dati per client interface javax.servlet.http.HttpServletResponse offre implementazione di ServletResponse specifica per HTTP OutputStream ServiceOutputStream

Laboratorio di Servizi Web - servlet - Ardissono 11 Metodi per comunicazione con client - I javax.http.HttpServletRequest –String getParameter(String parameterName) parsifica contenuto di request HTTP ed estrae valore di parametro “parName” Es: –String tipoInfo = req.getParameter("tipoInfo"); –String loginName = req.getParameter("login"); FORM HTML... <input type="text" name="login" align="left" size="25"> <input type="password" name="passwd" align="left” size=“25”>

Laboratorio di Servizi Web - servlet - Ardissono 12 Metodi per comunicazione con client - II HttpServletResponse –void setContentType(String mimeType) specifica formato MIME di output –PrintWriter getWriter() restituisce oggetto PrintWriter costruito da Web Container a partire da OutputStream associato a connessione client

Laboratorio di Servizi Web - servlet - Ardissono 13 Struttura standard di applicazione web Directory pubblica –contiene pagine HTML e JSP WEB-INF/web.xml –file che descrive parametri di configurazione della Servlet e varie proprietà WEB-INF/classes/ –contiene classi compilate delle Servlet e altre classi di utilità, eventualmente organizzate in package WEB-INF/lib/ –contiene eventuali JAR file di librerie usate da applicazione swebi/

Laboratorio di Servizi Web - servlet - Ardissono 14 Esempio di prova (Hello) /usr/home/studenti/labgroup/labsweb/swebi/ –file HTML: pagina.html –WEB-INF classes –application »servlets: application.servlets.Hello.java »other: altre classi di utilità (application.other.InterrogaDB.java, …) web.xml: non specificato –src (albero dei sorgenti) Applicazione di prova che avete usato è in package “application”. Servlets separate da altre classi per comodità... NB: se non si descrive Servlet in deployment descriptor si rinuncia a usare configuration parameters etc.

Laboratorio di Servizi Web - servlet - Ardissono 15 Deployment descriptor - web.xml Un descrittore per ogni applicazione web file web.xml (associato a contesto di applicazione - swebi) usato da Web Container per –inizializzare applicazione web –identificare applicazione invocata da HTTP request specifica –parametri di inizializzazione di Servlet e applicazione (es: URL di database usato da applicazione, …) –definizione di servlets e JSPs di applicazione –….

Laboratorio di Servizi Web - servlet - Ardissono 16 Altro esempio Estendiamo applicazione swebi, che inizialmente faceva solo il saluto, aggiungendo servizio: richiesta informazioni personali  Implementiamo una nuova Servlet (Informazioni.java), in aggiunta ad Hello.java, che invocheremo da una pagina HTML

Laboratorio di Servizi Web - servlet - Ardissono 17 Nota bene NB: anche se le due Servlet sono parte della stessa applicazione, non comunicano tra loro In generale, le Servlet di un’applicazione dovrebbero cooperare e bisognerebbe definire applicazioni diverse, se si offrono servizi indipendenti Tuttavia, ciascun gruppo di laboratorio corrisponde, per questioni di configurazione del web server, ad una diversa applicazione  usiamo applicazione per sviluppare tutte le Servlet che vogliamo (indipendentemente dal fatto che c’entrino l’una con l’altra …)

Laboratorio di Servizi Web - servlet - Ardissono 18 Struttura standard di applicazione web webapps sweb01sweb40 WEB-INF XMLSchemaclasses firstapplication src codice sorgente classi compilate Schemi XML e classi generate coffeeOrder.xsd coffee1 CoffeeOrderType.java, … coffee1 Come attesa da Web container tomcat

Laboratorio di Servizi Web - servlet - Ardissono 19 Gestione informazioni personali /usr/home/studenti/labgroup/labsweb/swebi/ –file HTML: richiesta.html –WEB-INF classes –application »servlets: application.servlets.Informazioni.java »other: nessuna classe di utilità web.xml –src (albero dei sorgenti da compilare)

Laboratorio di Servizi Web - servlet - Ardissono 20 swebi - web.xml - preambolo Web Application sweb40 descrizione dell'applicazione... …. DTD di web.xml Descrizione applicazione web

Laboratorio di Servizi Web - servlet - Ardissono 21 swebi - web.xml - context parameters <!-- Context parameters definiscono costanti di tipo String condivise tra più servlet e JSP dell’applicazione. Questi parametri possono essere definiti dal system administrator che installa l’applicazione. Da una Servlet (o JSP) si accede ai valori assegnati ai parametri invocando il metodo: String value = getServletContext().getInitParameter("name"); dove “name” corrisponde al nome dato al parametro usando --> contextPar Questo parametro è generale di applicazione... Parametri di inizializzazione usati in tutta l’applicazione web sono memorizzati nel contesto di applicazione

Laboratorio di Servizi Web - servlet - Ardissono 22 swebi - web.xml - descrizione servlet info Servlet che fornisce informazioni personali application.servlets.Informazioni saluto CIAO!! Parametri di inizializzazione di Servlet info Descrizione di Servlet gestita da web container Alias per invocazione Servlet Nome della classe Servlet

Laboratorio di Servizi Web - servlet - Ardissono 23 swebi - web-xml - ultima parte DB-URL jdbc:idb:/usr/home/studenti/labgroup/labsweb/sweb40/localDB/properties.prp 5 …… definizione di altra servlet …. …... Specifico che Servlet deve essere caricata (per quinta) appena Web Container viene lanciato NON FATELO!!!!

Laboratorio di Servizi Web - servlet - Ardissono 24 Pagina web: richiesta.html - I RICHIESTA INFORMAZIONI Richiesta di informazioni <!-- --> ….. NB: posso invocare la Servlet con nome di classe o con alias (alias più robusto e flessibile)

Laboratorio di Servizi Web - servlet - Ardissono 25 Pagina web: richiesta.html - II Login: Password: <input type="password" name="passwd" align="left” size="25">...

Laboratorio di Servizi Web - servlet - Ardissono 26 Pagina web: richiesta.html - III Tipo di informazioni: Nessuna informazione Nomi persone Conti correnti bancari

Laboratorio di Servizi Web - servlet - Ardissono 27 Servlet Informazioni.java - I package application.servlets; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.sql.*; public class Informazioni extends HttpServlet { String cheers; String url; Connection con; public Informazioni() { cheers = ""; url = “”; con = null; } Costruttore classe (usato da Web Container per istanziare la Servlet)

Laboratorio di Servizi Web - servlet - Ardissono 28 Servlet Informazioni.java - II public void init(ServletConfig config) throws ServletException { super.init(config); cheers = config.getInitParameter("saluto"); url = config.getInitParameter("DB-URL"); try { Class.forName("org.enhydra.instantdb.jdbc.idbDriver"); } catch (ClassNotFoundException e) { System.err.println(e); throw new ServletException(e);} } Prima di istruzioni di inizializzazione specifiche eseguo metodo init di base!! Chiedo a ServletConfig object i valori dei parametri di inizializzazione di Servlet Carico Driver JDBC e catturo eccezioni forzando ServletException...

Laboratorio di Servizi Web - servlet - Ardissono 29 Servlet Informazioni.java - III public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); String tipoInfo = req.getParameter("tipoInfo"); String loginName = req.getParameter("login"); String contextP = getServletContext().getInitParameter(“contextPar”); Specifico contenuto MIME di risposta Estraggo parametri da HTTPRequest Prendo riferimento a oggetto ServletContext (per recuperare parametri generali di applicazione) Chiedo a oggetto ServletContext valore di parametro generale “contextPar” - vd web.xml

Laboratorio di Servizi Web - servlet - Ardissono 30 Servlet Informazioni.java - IV PrintWriter out = res.getWriter(); out.println(" Informazioni” + “ "); out.println(" " + cheers + " Ecco le informazioni che desideri, "+loginName+ “ “); out.println(contextP); Chiedo a riferimento a oggetto PrintWriter (da usare per produrre output da inviare a web server - HTTP response) Inizio costruzione risposta (pagina HTML generata dinamicamente) NB: In generale, i parametri di applicazione sono par di configurazione (qui lo uso solo per fare una stampa…)

Laboratorio di Servizi Web - servlet - Ardissono 31 Servlet Informazioni.java - V … se tipoInfo è “no”  stampo su out “no info” altrimenti, se tipoInfo è “nomi” { try { apro connessione a database; eseguo query SQL e salvo risultati in Hashtable valori; chiudo connessione; } catch (SQLException e) { System.err.println(e); throw new ServletException(e);} if (valori==null) out.println("****** RISULTATO NULL"); else { scorro ResultSet con cursore per estrarre informazioni; stampo informazioni su oggetto PrintWriter (out); }} else out.println("Tipo di informazione non accessibile"); out.println(“ "); out.close(); } Forzo ServletException Chiudo PrintWriter

Laboratorio di Servizi Web - servlet - Ardissono 32 Ciclo di vita di una servlet Servlet inesistente Servlet istanziata Servlet inizializzata e/o pronta per richieste ServiceDestroyed Unavailable Istanziazione a startup del container o in seguito a HTTP request inizializzazione HTTP request(s) da client(s) Fine thread service shut-down di web container Garbage collection Inizializz fallita Fallimento temporaneo o permanente

Laboratorio di Servizi Web - servlet - Ardissono 33 Esecuzione metodo service Ad ogni HTTP request Web Container crea thread per esecuzione richiesta  richieste di client diversi gestite in parallelo nell’ambito del processo principale, con poco spreco di risorse computazionali MA: attenti agli accessi a risorse in mutua esclusione. Es: –variabili globali di Servlet, da non modificare in parallelo –accessi a DB che non garantiscono modifiche in mutual esclusione

Laboratorio di Servizi Web - servlet - Ardissono 34 Deployment di applicazione - ant Usiamo tool ANT, che permette di compilare applicazioni web, caricarle e scaricarle da web container Ant –programma di aiuto allo sviluppo di applicazioni (web e non) –Esegue file di build (build.xml) che specifica operazioni da fare (task) e ordine di esecuzione dei task Tipi di task: delete dir, make dir, copy, compile, install URL, remove URL, … in generale permette di lanciare anche programmi, come xjc di JAXB

Laboratorio di Servizi Web - servlet - Ardissono 35 Deployment di applicazione - ant Dato il nostro build.xml, si effettuano le seguenti operazioni –eliminazione e ricostruzione di directory di applicazione sotto area di deployment (WEB-INF/classes), per accertarsi che classi compilate vecchie vengano rimosse e ad ogni ricompilazione applicazione sia completamente rinnovata –compilazione classi java in directory di deployment (WEB-INF/classes) –installazione applicazione in web container (ant install) –eliminazione di installazione da web container (ant remove) –lista applicazioni attive in Web Container (ant list) –….

Laboratorio di Servizi Web - servlet - Ardissono 36 Deployment di applicazione – build - I ANT esegue file di build passato come parametro: build.xml specifica operazioni di deployment (task eseguibili) vd alias definito in catEnv.sh –alias ant '$JWSDP_HOME/jakarta-ant-1.5.1/bin/ant - buildfile build.xml’ ant install: task di installazione di applicazione (rinnova directory, compila, installa) ant remove: rimuove installazione di applicazione da web container

Laboratorio di Servizi Web - servlet - Ardissono 37 Deployment di applicazione – build - II build.xml: file di build da usare per deployment delle vostre applicazioni in ambiente unix Versione da voi scaricata è la base ma è estensibile Come esempio, consideriamo versione estesa per vedere come utilizzare anche classi generate da JAXB in deployment di applicazione Vediamo alcune parti del file di build esteso: definizione di properties (variabili), di task, esecuzione task,... Le parti relative a JAXB sono in viola

Laboratorio di Servizi Web - servlet - Ardissono 38 Deployment di applicazione – build - III clean: rimuovo file build: compilo classi mettendo compilati sotto classes prepare: ricreo directories bindXMLSchema: genero classi da schema XML (xjc) webapps sweb01sweb40 WEB-INF XMLSchemaclasses firstapplication src codice sorgente classi compilate Schemi XML e classi generate coffeeOrder.xsd coffee1 CoffeeOrderType.java, … coffee1

Laboratorio di Servizi Web - servlet - Ardissono 39 build.xml - I <property name="context.path” value="/usr/home/studenti/labgroup/labsweb/sweb40" /> <property name="user.path” value="/usr/home/studenti/labgroup/labsweb/sweb40" /> <property name="deployed.JAXBClasses.path" value= "${WEB-INF.path}/classes/coffee1"/> …... Definizione properties usate come variabili nel resto del file

Laboratorio di Servizi Web - servlet - Ardissono 40 build.xml - II Login e password per installare applicazioni in web container URL per connettersi a tomcat durante installazione applicaz Carico librerie JWSDP da classpath

Laboratorio di Servizi Web - servlet - Ardissono 41 build.xml - III Definizione task di ant di base Task di invocazione di codice esterno (jaxb) Rimozione directory applicazione in area di deployment

Laboratorio di Servizi Web - servlet - Ardissono 42 build.xml - IV <target name="prepare" depends="init" description="Create build directories."> <target name="install” description="Install web application" depends="build"> <install url="${url}" username="${username}" password="${password}" path="${path}" war="file:${context.path}"/> Creazione directory di build: richiama init task... ant install... initprepare buildinstall

Laboratorio di Servizi Web - servlet - Ardissono 43 build.xml - V …. <remove url="${url}" username="${username}” password="${password}" path="${path}"/> ant remove...

Laboratorio di Servizi Web - servlet - Ardissono 44 build.xml - VI <target name="build" depends="clean, prepare, bindXMLSchema" description="Compile app Java files and copy HTML and JSP pages" > <javac srcdir="${user.path}/src" destdir="${WEB-INF.path}/classes" debug="on" classpath="${classpath}:${myPath}:"> Clean build Prepare bindXMLSchema

Laboratorio di Servizi Web - servlet - Ardissono 45 build.xml - VII <target name="bindXMLSchema" description="Expand all XML schema files and place generated classes in SOURCE package" > <xjc target="${XSD.path}" package="coffee1"> Invoca xjc per generare classi da XML schema