Università degli Studi di Modena e Reggio Emilia
Facoltà di Ingegneria – Reggio Emilia
CORSO DI
TECNOLOGIE E APPLICAZIONI WEB
Web Server TOMCAT
Ing. Marco Mamei
Anno Accademico 2004-2005
M. Mamei - Tecnologie e Applicazioni Web
1
Tomcat 3.3: Guida all’uso
Cos’è Tomcat:
Tomcat è un prodotto free e open source sviluppato in Java all’interno della fondazione Apache.
Tomcat realizza le funzioni di:
1. Web server
2. Container per web application conforme alle specifiche Java 2 Enteprise Edition (J2EE). Il che
significa che Tomcat funzione da motore per Servlet e Java Server Pages (JSP).
Il fatto che Tomcat funga da web server fa sì che una volta connessi in Internet, il nostro computer
pubblica le informazioni (risponde alle richieste http) esattamente come un qualsiasi altro nodo
della rete e quindi il nostro sito potrebbe essere visitato da una browser su un computer remoto.
Installazione:
Preliminare 1: (installazione Java)
Prima di installare Tomcat è fondamentale controllare che ci sia un ambiente di sviluppo Java
(jdk1.3 o jdk1.4) installato nel computer. Nel caso Java non sia installato prima di tutto bisogna
installare Java.
1. Andate alla pagina web: http://java.sun.com/j2se/1.3/download.html. Da qui andate su
DOWNLOAD Windows(all languages) SDK. Premete il pulsante ACCEPT, quindi
scaricate il file: j2sdk-1_3_1_05-windows-i586.exe
2. Eseguite il file appena scaricato per installare il jdk1.3 in una directory a vostra scelta. Ad
esempio C:\Programmi\jdk1.3 oppure (scelta di default): c:\jdk1.3.1_05
Per poi sviluppare applicazioni in Java si consiglia di usare l’ambiente JCreator, di pubblico
dominio. Nella installazione di JCreator vi verrà chiesto di specificare in quale direttorio si trova
l’ambiente di sviluppo Java jdk che avrete installato.
Preliminare 2: (Installazione Package Servlet)
I packages necessari per compilare le Servlet non sono automaticamente inclusi nel jdk che si trova
in rete. Ciò che e' necessario fare, quindi, e' installare esplicitamente la libreria di package delle
servlet.
Per fare ciò, scaricate da: http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.3.1/bin/ il
file jakarta-servletapi.zip Quindi:
1. Estraete tutti i file da jakarta-servletapi.zip in una cartella a vostro piacere (mio consiglio:
estraeteli dentro la cartella di jdk java...). Come al solito, fate in modo di preservare la
M. Mamei - Tecnologie e Applicazioni Web
2
struttura delle cartelle durante l'estrazione. Quello che vi dovreste trovare e' una cartella:
c:\jdk1.3.1_05\jakarta-servletapi\ con dentro altre sottocartelle e in particolare la
sottocartella lib.
2. A questo punto, dovete fare in modo che il CLASSPATH di java sia in grado di trovare
anche i nuovi package che avete installato, e in particolare il package compresso servlet.jar
che si troverà nella cartella: c:\jdk1.3.1_01\jakarta-servletapi\lib\ Per fare ciò con JCreator,
per esempio, dovete: andare nel menu Configure-->Options;- selezionare la voce
JDKProfiles; fare l'edit del vostro profile jdk; fare "add --> package"; selezionare il file
"servlet.jar" che si troverà, per esempio,
dentro alla cartella: c:\jdk1.3.1_01\jakartaservletapi\lib
Fatto ciò sarà possibile compilare le Servlet importando gli opportuni package nei nostri file java....
Installare Tomcat:
1. Scaricate il file jakarta-tomcat-3.3.1.zip (4.7MB) dal sito:
http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.3.1/bin/
Poiché questo indirizzo potrebbe cambiare nel corso dei mesi, andare eventualmente sulla
home page di Apache e da lì cercare TomCat Jakarta e poi i link per il download dei file binari.
2. Eseguite l’unzip del file scaricato in una directory qualsiasi ad esempio in C:\Programmi\
In questo modo nella directory scelta compare la seguente sotto-directory:
C:\Programmi\jakarta-tomcat-3.3.1
(attenzione però: perché questo succeda dovete controllare che WinZIP, o il programma di
compressione che state usando, faccia in modo di preservare i nomi delle cartelle durante
l’estrazione, e estragga così i file creando le apposite cartelle e sottocartelle di Tomcat)
3. A questo punto bisogna impostare una variabile d’ambiente JAVA_HOME alla directory
dove è stata installato il jdk. Questo serve per fare capire al server TOMCAT in quale
directory è installato Java. (Supponiamo per esempio che il vostro jdk Java sia installato in
C:\Programmi\jdk1.3).
3.1.
Se avete Windows 95, 98, o Me
Aprire il file autoexec.bat in C: aggiungere la riga
set JAVA_HOME=C:\Programmi\jdk1.3
3.2.
Se avete Windows NT – 2000 – XP
Aprire il pannello di controllo, quindi selezionare l’icona sistema, quindi la sezione
avanzate e il pulsante variabili d’ambiente. Nella sezione variabili di sistema aggiungere
una variabile con nome JAVA_HOME e valore C:\Programmi\jdk1.3
4.
Riavviare il computer per rendere effettiva la nuova variabile d’ambiente.
Lanciare Tomcat:
1.
Aprire una finestra DOS (prompt dei comandi) e andare nella directory dove è stato
installato Tomcat, ad esempio: C:\Programmi\jakarta-tomcat-3.3.1
M. Mamei - Tecnologie e Applicazioni Web
3
2.
3.
4.
Entrare dentro la sotto-directory bin
Eseguire il file startup.bat
Si apre un’altra finestra con circa il seguente display:
NOTA BENE: lanciare il file startup.bat facendo doppio click da una finestra Windows
potrebbe non funzionare, il server potrebbe non partire!!!
NOTA BENE: per disattivare il server non limitarsi a chiudere la finestra, ma eseguire il
comando shutdown.bat
Controllare che tutto vada bene:
1.
2.
3.
Lanciare il browser e andare su http://localhost:8080 (oppure, se così non dovesse
funzionare, provate http://127.0.01:8080
Dovrebbe comparire la seguente pagina web. Questa pagina è fornita dal vostro computer
che tramite Tomcat svolge la funzione di web server!!
Seguite un po’ di Link per verificare che tutto vada bene e in particolare verificate il
funzionamento sia di una Servlet (seguendo il link Servlet Examples) sia di una JSP
(seguendo il link JSP Examples).
M. Mamei - Tecnologie e Applicazioni Web
4
4.
A questo punto potete spegnere Tomcat sia chiudendo la finestra DOS mostrata
precedentemente, sia eseguendo il file shutdown.bat da C:\Programmi\jakarta-tomcat3.3.1\bin
Lavorare con Tomcat; le Web Applications:
Per iniziare a lavorare con Tomcat è opportuno spiegare il concetto di web application. Quando si
crea un sito web con molte pagine è importante mantenere una buona organizzazione della struttura
dei file che realizzano il sito, altrimenti il sito diventa di difficile aggiornamento e manutenzione.
Per agevolare questa manutenzione, seguendo le specifiche Java 2 Enterprise Edition (J2EE)
implementate da Tomcat, un sito viene suddiviso in diverse web application che rappresentano una
serie di risorse (pagine html, immagini, servlet, jsp, fogli di stile, programmi di script, etc.)
concettualmente correlate.
Tomcat implementa questa suddivisone attraverso il suo sistema di directory. All’interno della
directory di installazione di Tomcat c’e’ la directory webapps che contiene tutte le web application
che realizzano il sito. Dentro questa directory ce ne sono altre ognuna delle quali realizza una web
application.
Tomcat consente di aggiungere dinamicamente web application senza interrompere il web
server.Questo permette di offrire un servizio continuo 24by7 nonostante aggiornamenti e modifiche.
Per noi si traduce nel fatto che possiamo realizzare tutte gli esempi con Tomcat acceso e non
dobbiamo riavviare Tomcat ad ogni modifica.
Quindi ogni applicazione web che faremo sarà contenuta in una cartella all’interno di webapps. La
struttura standard di una cartella che realizza una web application che indicheremo come
application1 è la seguente:
application1/
Questa cartella contiene i file che compongono la parte statica del sito (pagine html, xml, fogli di
stile, immagini, etc.). Da notare che intendiamo statica lato server. In questa cartella possono essere
contenute pagine di script lato client e applet.
application1/WEB-INF
Questa cartella contiene il file di configurazione della web application che si chiama web.xml.
Alcune funzionalità del file di configurazione vengono dettagliate in seguito.
application1/WEB-INF/classes
Questa cartella contiene i file .class di eventuali servlet che fanno parte della web application.
Nota: un file .war (web archive) altro non è che il contenuto di una web application zippata e
rinominata da .zip a .war. All’avvio, Tomcat esegue il deploy automatico dei file .war presenti nella
cartella webapps. I file vengono scompattati e avviati come applicazioni web.
M. Mamei - Tecnologie e Applicazioni Web
5
Esempio 1 - HTML
Iniziamo con il creare la home page del sito. Cancelliamo innanzitutto tutto il contenuto di webapps
fornito di default con Tomcat, e ricreiamo all’interno di webapps una directory ROOT che
rappresenta la web application di base del nostro sito.
Creiamo un file html, ad esempio:
<html>
<body>
Hello World!
</body>
</html>
e lo salviamo dentro ROOT come index.html (non è un nome casuale!! Tomcat è configurato per
considerare i file index come quelli da mandare di default in risposta a una domanda).
Un primo sguardo ai file di configurazione di Tomcat
Anche se non strettamente necessario in questa prima fase, conviene guardare i file di
configurazione di Tomcat. Questi sono contenuti nella cartella conf di Tomcat.
In particolare qui focalizziamo l’attenzione sui file che si chiamano apps-*.xml ce ne possono
essere più d’uno. Questi file sono essenziali perché stabiliscono quale web application associare a
un determinato url.
In generale può convenire cancellare tutti i file apps-*.xml presenti e crearne uno nostro unificato.
Chiamiamolo apps-all.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<webapps>
<Context path="" docBase="webapps/ROOT" />
</webapps>
Questo file dice fondamentalmente che l’url specificato nell’attributo path è gestito dalla web
application specificata dall’attributo docBase. In questo caso si stabilisce che l’url
http://localhost:8080 è mappato nella web application ROOT.
Se creiamo un seconda web application, ad esempio Prova1. Potremmo cambiare il file appsall.xml come segue
<?xml version="1.0" encoding="ISO-8859-1"?>
<webapps>
<Context path="" docBase="webapps/ROOT" />
<Context path="/WebApp1" docBase="webapps/Prova1" />
</webapps>
Per mappare che l’url http://localhost:8080/WabApp1 nella web application Prova1.
M. Mamei - Tecnologie e Applicazioni Web
6
Nota: Per visualizzare correttamente gli esempi può essere necessario cancellare la cache del
browser che potrebbe mantenere le pagine corrispondenti all’installazione originale appena
visualizzate.
Esempio 2 - Servlet
Creiamo una nuova web application (directory) ServletEsempio. Innanzitutto utilizzando java
creiamo la seguente servlet ottenendo il file HelloWorldExample.class
Nota: anche se non è certo obbligatorio, è meglio non inserire le Servlet in package java.
Questo semplifica il modo in cui le server vengono inserite nelle directory del web-server.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorldExample extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
Le specifiche J2EE seguite da Tomcat, prevedono che le classi java delle Servlet vadano nella
cartella WEB-INF\classes all’interno della web application. Quindi nel nostro esempio avremo:
webapps\ServletEsempio\WEB-INF\classes\HelloWorldExample.class
A questo punto sono necessarie due passi importanti. Come abbiamo fatto nel primo esempio,
dobbiamo aggiungere la nuova web application al file di configurazione apps-all.xml nella cartella
conf.
<Context path="/ServEsempio" docBase="webapps/ServletEsempio" />
Inoltre dobbiamo creare il file web.xml all’interno della cartella WEB-INF di questa web
application nel modo seguente.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>HelloWorldExample</servlet-class>
</servlet>
M. Mamei - Tecnologie e Applicazioni Web
7
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
Questo file associa il nome servlet1 alla servlet realizzata dalla classe HelloWorldExample.class
(questa cosa viene trattata tra i tag servlet). Inoltre associa l’url /hello alla servlet di nome servlet1.
(questa cosa viene trattata tra i tag servlet-mapping).
Tutto questo fa si che il web server colleghi la servlet all’url completo:
http://localhost:8080/ServEsempio/hello
In alternativa la servlet è raggiungibile anche tramite:
http://localhost:8080/ServEsempio/servlet/HelloWorldExample
O mettendo un link sulla pagina iniziale del tipo:
<A HREF=”ServEsempio/hello”>run the servlet</A>
oppure
<A HREF=”ServEsempio/servlet/HelloWorldExample”>run the servlet</A>
Dal punto di vista dell’uso di Tomcat estendere questo esempio con pagine web più complicate che
richiedono servlet con più classi, o integrare in una unica web application pagine HTML (o XML) e
servlet non cambia niente.
Configurazioni Opzionali
Tomcat prevede numerosi file per configurare il web server. Ad esempio, ci sono i file relativi alle
politiche di sicurezza per l’accesso al sito, per ridefinire gli URL con cui si accede alle pagine del
sito, per stabilire su quali porte Tomcat risponde alla comunicazione, etc.
I file di configurazione relativi all’intero web server sono dentro la directory conf sotto
all’installazione di Tomcat, i file relativi alla configurazione delle singole web application sono nel
file web.xml nella cartella WEB-INF all’interno delle web application.
La documentazione relativa a questi file non è trattata in questa guida all’uso, ma può essere
reperita al sito http://jakarta.apache.org/tomcat/tomcat-3.3-doc/index.html
Nel seguito diamo solo una sola operazioni comune:
Modificare la porta http:
Tomcat è configurato di default per rispondere alle chiamate http sulla porta 8080. Questa
impostazione può essere modificata, modificando la riga:
M. Mamei - Tecnologie e Applicazioni Web
8
<Http10Connector port="8080" secure="false" maxThreads="100" maxSpareThreads="50"
minSpareThreads="10" />
nel file server.xml della directory conf.
Un’operazione tipica è quella di settare la porta ad 80 (quella usata di default dai browser) in modo
da poter accedere al sito con: http://localhost
Nota: un modo molto comodo di imparare a gestire i file di configurazione di Tomcat è quello di
sfruttare gli esempi già disponibili. In particolare per tutto quello che riguarda le impostazioni di
sicurezza (ad esempio, l’accesso a determinate web application sottoposto a username e password) è
utile dare un’occhiata e cercare di “adattare” i file nella web application admin contenuto in
Tomcat.
M. Mamei - Tecnologie e Applicazioni Web
9