Configurazione ed utilizzo di Apache Tomcat

Posted On 04 Gen 2009
Comment: Off

tutorialjavaTutorial Java – Per poter sviluppare applicazioni che supportano la tecnologia Java delle servlet e delle pagine JSP dobbiamo dotarci di un web server dotato di un motore per le servlet e per le pagine JSP e cioè di un applicazione che funge da servlet/JSP container. Per il nostro corso utilizzeremo il server open-source Tomcat, creato dall’Apache Group nell’ambito del progetto Jakarta che provvede a fornire software specifici per la piattaforma Java. Prima di iniziare ricordiamo che bisogna aver installato sulla propria macchina l’SDK Java e per la precisione un SDK dalla versione 1.2 in poi per lo sviluppo secondo le specifiche servlet 2.3 e JSP 1.2 e un SDK dalla versione 1.4 in poi per lo sviluppo secondo le specifiche servlet 2.4 e JSP 2.0.

 

Configurazione e verifica rapida di Tomcat
Dopo aver scaricato Tomcat ed averlo installato

TABELLA 1

Download:
http://jakarta.apache.org/tomcat/index.html e nell’area download Binaries scaricare la versione 4.1.30

Quick install:
Impostare la variabile d’ambiente JAVA_HOME:
• per sistemi Windows settarla selezionando dal menu contestuale di Risorse del computer la voce Gestione e poi cliccare dal menu Azione->proprietà e selezionare il tab Avanzate. Premere, poi, il pulsante Impostazioni nell’area Variabili di ambiente per far apparire la finestra corrispondente. A questo punto nell’area Variabili di sistema cliccare sul pulsante Nuovo e digitare JAVA_HOME nella casella Nome variabile e il percorso di installazione del SDK nella casella Valore variabile, quindi uscire confermando tutte le azioni;
• per sistemi Linux editare il file .bash_profile posto sotto la propria directory di /home/utente e impostare la medesima variabile come ad Es. JAVA_HOME=/usr/java/j2sdk1.4.2_04 poi export JAVA_HOME e infine per rendere da subito effettive le modifiche digitare source .bash_profile.

 

 

 Procediamo alla sua configurazione attraverso i seguenti semplici passi ricordando che con tomcat_dir ci riferiremo al path dove ogni utente ha installato Tomcat e che gli utenti Windows dovranno usare il back-slash come separatore di percorso laddove noi useremo lo slash / unixiano:
• abilitazione del ROOT context, cioè dell’applicazione Web di default di Tomcat ove svilupperemo per comodità le nostre prime servlet. Editare il file server.xml da tomcat_dir/conf scommentando la linea <Context path=”” docBase=”ROOT” debug=”0″/>;
• attivazione del servlet reloading, cioè istruiamo Tomcat affinché verifichi, se le nostre classi hanno subito delle modifiche rispetto all’ultimo caricamento delle stesse nella memoria del server, al fine di ricaricarle aggiornate. Ovviamente tale caratteristica conviene averla attivata in un ambiente di sviluppo al fine di evitare di riavviare Tomcat ogni qualvolta ricompiliamo la servlet modificata ma è opportuno disattivarla in un ambiente di deploy cioè in un ambiente di produzione al fine di avere maggiori performance da parte del server. Editare il file server.xml da tomcat_dir/conf e inserire la seguente linea <DefaultContext reloadable=”true” /> sotto quella scommentata;
• attivazione dell’invoker servlet, che consente di utilizzare la propria servlet senza impostare un file di descrizione specifico detto Web Application Deployment Descriptor. Così facendo basterà porre la propria servlet in tomcat_dir/webapps/ROOT/WEB-INF/classes ed usare l’url http://host:porta/servlet/ServletName. Tale procedura ovviamente è conveniente soltanto per la fase di sviluppo ed apprendimento iniziale ma successivamente effettueremo il deploy della nostra web application come dettato dalle specifiche di SUN. Quindi scommentiamo il seguente il blocco di codice in web.xml sotto tomcat_dir/conf come da Tabella 2;

 

Tabella 2

Da:
<!– The mapping for the invoker servlet –>
<!–
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
–>

a:
<!– The mapping for the invoker servlet –>

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

 

 

 

• verifica che il server si avvii, eseguendo sotto Windows il comando tomcat_dir/bin/startup.bat e sotto Linux tomcat_dir/bin/startup_sh e digitando da un browser l’url http://host:8080 dove host è ovviamente il nome della vostra macchina. Se tutto è andato per il verso giusto vedremo la pagina di benvenuto altrimenti dalla shell digitiamo il comando tomcat_dir/bin/catalina run per vedere l’output del server e renderci conto dell’errore. Per fermare il server digitiamo per Window shutdown.bat o per Linux shutdown.sh. Prima di eseguire il comando in Linux verificare che i file startup.sh, shutdown.sh e catalina.sh abbiano il permesso di esecuzione.
• verifica che le pagine HTML e JSP vengano visualizzate correttamente, ponendo nella web application directory di default di Tomcat (tomcat_dir/webapps/ROOT) i file run_test.html 

 

LISTATO 1

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<!–
File di Test per il server Tomcat…
–>
<html>
<head>
<title>Testing page…</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<style type=”text/css”>
<!–
body
{
background-color: #7FA1E6;
}
–>
</style></head>
<body>
<H1>::RUN HTML Test::</H1>
Hello my Tomcat server run…HTML page
</body>
</html>

 

 

 

e run_test.jsp.

 

 

LISTATO 2

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<!–
File di Test per il server Tomcat…
–>
<html>
<head>
<title>Testing page…</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<style type=”text/css”>
<!–
body
{
background-color: #7FA1E6;
}
–>
</style></head>
<body>
<H1>::RUN JSP Test::</H1>
Hello my Tomcat server run…JSP page in data e alle ore: <%= new java.util.Date() %>
</body>
</html>

 

 

Per accedere basterà puntare il browser a http://host:8080/run_test.jsp e http://host:8080/run_test.html. 

 

 

Impostazione e test dell’ambiente di sviluppo
Dopo aver configurato il server bisogna impostare un ambiente di sviluppo per creare e testare le nostre servlet e le nostre pagine JSP. Eseguiamo i seguenti semplici passi:
• creiamo una directory di sviluppo dove porre i programmi nella nostra macchina di test e non nelle cartelle di Tomcat che serviranno per il deployment;
• impostiamo il CLASSPATH per le API di sviluppo delle servlet e delle pagine JSP che diranno al compilatore di utilizzarle per la compilazione dei nostri programmi. Per la nostra distribuzione di Tomcat il path è tomcat_dir/common/lib/servlet.jar. Impostiamo il CLASSPATH anche per la nostra directory di sviluppo (Tabella 3);

 

Tabella 3

Impostare la variabile d’ambiente CLASSPATH:
• per sistemi Windows recarsi come da Tabella 1 e impostare nell’area Variabili di sistema CLASSPATH con il . per il percorso corrente al fine di compilare classi senza package ovunque ci si trovi e con root_disk:\path il percorso di sviluppo al fine di compilare le classi facenti parte di un package e con tomcat_dir\common\lib\servlet.jar il percorso per le API di sviluppo delle servlet: CLASSPATH=.;c:\developin\myTest;c:\Tomcat4\common\lib\servlet.jar;
• per sistemi Linux editare il file .bash_profile posto sotto la propria directory di /home/utente e impostare la medesima variabile come ad Es. CLASSPATH=.:/home/thp/developing/myTest:/home/thp/develop/tomcat4/common/lib/servlet.jar e poi export CLASSPATH

 

 

• test di compilazione di una servlet che non usa i packages svolgendo le seguenti operazioni:
o creare la directory classes (necessario nelle ultime versioni di Tomcat) in tomcat_dir/webapps/ROOT/WEB-INF/;
o posizionarsi nella propria directory di sviluppo e compilare il file RunServlet.java (Listato 3);

 

LISTATO 3

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** Test server…
*
*/

public class RunServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException
{
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();

String strDocumentType = “<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.01 Transitional//EN\””+
“\”http://www.w3.org/TR/html4/loose.dtd\”>\n” +
“<!– File di Test per il server Tomcat…–>\n”;

String strHead = “<html><head><title>Testing page…</title>”+
“<meta http-equiv=\”Content-Type\” content=\”text/html; charset=iso-8859-1\”>”+
“<style type=\”text/css\”>”+
“<!– body {background-color: #7FA1E6;}–> </style></head>”;

String strBody = “<body><H1>::RUN Servlet Test::</H1>”+
“Hello my Tomcat server run…a Servlet </body></html>”;
out.println(strDocumentType + strHead + strBody);
}
}

 

 

o spostare il file generato RunServlet.class in tomcat_dir/webapps/ROOT/WEB-INF/classes;
o riavviare il server Tomcat;
o da un browser digitare http://host:8080/servlet/RunServlet
• test di compilazione di una servlet che usa i packages svolgendo le seguenti operazioni:
o creare la directory my_servlet in in tomcat_dir/webapps/ROOT/WEB-INF/classes/;
o creare la directory my_servlet nella propria directory di sviluppo e porci il file RunPackServlet.java (Listato 4)

 

LISTATO 4

package my_servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** Test server…
*
*/

public class RunPackServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException
{
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();

String strDocumentType = “<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.01 Transitional//EN\””+
“\”http://www.w3.org/TR/html4/loose.dtd\”>\n” +
“<!– File di Test per il server Tomcat…–>\n”;

String strHead = “<html><head><title>Testing page…</title>”+
“<meta http-equiv=\”Content-Type\” content=\”text/html; charset=iso-8859-1\”>”+
“<style type=\”text/css\”>”+
“<!– body {background-color: #7FA1E6;}–> </style></head>”;

String strBody = “<body><H1>::RUN Servlet Test::</H1>”+
“Hello my Tomcat server run…a Servlet in a package </body></html>”;
out.println(strDocumentType + strHead + strBody);
}
}

 

 

o posizionarsi nella directory my_servlet e compilare il file;
o spostare il file RunPackServlet.class in tomcat_dir/webapps/ROOT/WEB-INF/classes/my_servlet;
o riavviare il server Tomcat;
o dal browser digitare http://host:8080/servlet/my_servlet.RunPackServlet
• test di compilazione di una servlet che usa i packages ed una classe di appoggio svolgendo le seguenti operazioni:
o posizionarsi nuovamente della directory my_servlet e spostarci i file WelcomeServlet.java (Listato 5)

 

LISTATO 5

package my_servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** Welcome servlet
*
*/

public class WelcomeServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException
{

response.setContentType(“text/html”);
PrintWriter out = response.getWriter();

ServletAidTool.setPageTitle(“Prova…”);

out.print(ServletAidTool.html_DOCTYPE +
ServletAidTool.html_htmlS +
ServletAidTool.html_headS +
ServletAidTool.html_titleS +
ServletAidTool.getPageTitle() +
ServletAidTool.html_titleE +
ServletAidTool.html_META +
ServletAidTool.html_bodyS +
“WELCOME TO SERVLET WORLD!\n” +
ServletAidTool.html_bodyE +
ServletAidTool.html_htmlE);

}
}

 

 

e ServletAidTool.java (Listato 6)

 

LISTATO 6

package my_servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

/** A servlet to aid some tasks…
*/

public class ServletAidTool
{
public static final String html_commentS = “<!–“;
public static final String html_commentE = “–>”;
public static final String html_DOCTYPE = “<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.01 Transitional//EN\””+”\”http://www.w3.org/TR/html4/loose.dtd\”>\n”;
public static final String html_META = “<meta http-equiv=\”Content-Type\” content=\”text/html; charset=iso-8859-1\”>\n”;
public static final String html_htmlS = “<HTML>\n”;
public static final String html_htmlE = “</HTML>\n”;
public static final String html_headS = “<HEAD>\n”;
public static final String html_headE = “</HEAD>\n”;
public static final String html_titleS = “<TITLE>\n”;
public static final String html_titleE = “</TITLE>\n”;
public static final String html_bodyS = “<BODY>\n”;
public static final String html_bodyE = “</BODY>\n”;

private static String page_title;

// next time we add some methods …
public static void setPageTitle(String title)
{
page_title = title;
}
public static String getPageTitle()
{
return (page_title == null ? “Senza Titolo” : page_title);
}
}

 

 

o compilare entrambi i file di cui sopra;
o nella directory tomcat_dir/webapps/ROOT/WEB-INF/classes/my_servlet porre i file WelcomeServlet.class e ServletAidTool.class;
o dal browser digitare http://host:8080/servlet/my_servlet.WelcomeServlet

About the Author

Related Posts