
Memento TOMCAT
- Sommaire
- Généralités, ressources.
- Implantation et conditions de fonctionnement
- Pêle-mêle installation et configuration
- Détails d’installation de Tomcat sous Linux
- Premiers tests
- Administration
Généralités, ressources.
Web Service : application utilisable via un réseau du type Internet. Principale technique : J2EE (SUN, IBM, Apache Group). TOMCAT fournit le support pour tous les services J2EE. On utilise en particulier des JSP (Java Server Page), pages HTML qui embarquent des instructions Java ; et des servlets, programmes Java qui génèrent à la volée le code html. Au départ module conçu pour le serveur Apache, Tomcat est devenu un serveur autonome, tout en Java, développé par le projet Jakarta.
Voir : http://jakarta.apache.org et http://www.webservices.org.
Implantation et conditions de fonctionnement
Par défaut Tomcat démarre sur le port 8080 (http://localhost:8080). Pour déployer Tomcat sur un poste qui n’a que le JRE, il faudra précompiler les JSP. Voir aussi plus bas Compléments de configuraion.
- /bin
- Scripts de démarrage, arrêt et autres.
- /common/lib
- Contient les bibliotèques ("jar") utilisées par Tomcat pour toute Webapp.
- /common/classes
- Contient les programmes ("class") qui ne sont pas dans un "jar".
- /conf
- Fichiers de configuration et DTD, notamment le fichier server.xml
- /logs
- Fichiers journaux (accès et erreurs)
- /webapps
- Emplacement où mettre les applications
Sous /webapps on range les applications ; Tomcat 5 fournit une application ROOT avec une documentation et des exemples.
Administrateur : avec la version 5.5, admin n’est pas dans le package d’origine, c’est un package à récupérer à part. Installer par copie des ss-répertoires conf et server.
Pêle-mêle installation et configuration
La variable d’environnement CATALINA_HOME pointe le répertoire d’installation de Tomcat. CATALINA_BASE permet d’accéder à une instance particulière au lieu de l’application par défaut.
Servlets : pour compiler il faut ajouter dans le Classpath : CATALINA_HOME/common/lib/[servlet.jar] Voir le nom exact de servlet.jar. Dans Tomcat 5.0 on peut trouver servlet-api, vérifier dans [CATALINA_HOME]/common/lib.
Il peut être utile de copier lib/tools.jar du JDK dans common/lib.
Détails d’installation de Tomcat sous Linux
Installation supposée faite dans /opt/tomcat.
- Etre "root" (su…)
- Récupérer "l’archive", par exemple /tmp/jakarta-tomcat-5.0.25.tar.gz,
- la "déziper" dans tmp : cd /tmp puis :
- tar -xzvf /tmp/jakarta-tomcat-5.0.25.tar.gz
- Un répertoire jakarta-tomcat-5.0.25 est créé ; le déplacer dans opt et le renommer : mv /tmp/jakarta-tomcat-5.0.25 /opt/tomcat
Puis ajout de nouvelles variables d’environnement :
- CATALINA_BASE=/opt/tomcat
- export CATALINA_BASE
- CATALINA_HOME=/opt/tomcat/webapps/test
- export CATALINA_HOME
Les variables CLASSPATH et JAVA_HOME sont supposées en place.
Correction à /opt/tomcat/bin/setclasspath.sh : ligne 57, ôter le test "if OS400 = false" (et le "fi" correspondant)
(toujours root :) $CATALINA_BASE/bin/startup.sh puis Vérifier le fonctionnement dans un navigateur : http://localhost:8080
Premiers tests
Créer une zone de test
Sous [CATALINA_HOME]/webapps, créer un répertoire nommé (par exemple) test, dans lequel on doit créer WEB-INF qui lui-même devra contenir deux répertoires class et lib.
JSP simple
Créer ce fichier "coucou.jsp" dans [CATALINA_HOME]/webapps/test :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><title>JSP de demonstration</title></head><body> <h1>JSP Test</h1> Time: <%= new java.util.Date() %> </body></html>
Dans un navigateur la commande http://localhost:8080/test/Coucou.jsp doit afficher l’heure.
JSP plus corsé
L’appeler date.jsp par exemple
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="tekno/lynx/lynx_cmd.htm" xml:lang="fr"> <head> <meta content="application/xhtml+xml; charset=iso-8859-1" http-equiv="Content-Type" /> <title>JSP de test</title> <%@ page session="false"%> </head> <body bgcolor="white"> <%@ page import="dates.*"%> <jsp:useBean id='clock' scope='page' class='dates.JspCalendar' /> <p>Nous sommes le <jsp:getProperty name="clock" property="dayOfMonth"/> /<jsp:getProperty name="clock" property="month"/> /<jsp:getProperty name="clock" property="year"/> et il est <jsp:getProperty name="clock" property="time"/> </p> </body></html>
Mettre ce fichier dans le même répertoire que le précédent. Condition de fonctionnement : avoir copié dans [CATALINA_HOME]/webapps/test/WEB-INF/classes le contenu de [CATALINA_HOME]/webapps/jsp-examples/WEB-INF/classes. Sinon l’import de "dates.*" et donc le jsp:useBean ne généreront que des erreurs.
Ne pas oublier de REDEMARRER le serveur après chaque modification.
SERVLET minimaliste
Créer le programme source CoucouServlet.java :
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class CoucouServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n"; out.println(docType + "<html>\n" + "<head><title>Servlet</title></head>\n" + "<body>\n" + "<h2>Coucou !</h2>\n" + "</body></html>"); } }
Compiler et copier le CoucouServlet.class obtenu dans [CATALINA_HOME]/webapps/test/WEB-INF/classes. Dans un navigateur la commande http://localhost:8080/test/servlet/CoucouServlet doit afficher le "Coucou !" prévu. Condition : créer/adapter la variable d’environnement CATALINA_BASE (dans l’exemple : [CATALINA_HOME]/test).
Utile : copier dans [CATALINA_HOME]/webapps/test/WEB-INF/lib le contenu de [CATALINA_HOME]/common/lib.
Compilation : il faut servlet.jar, le rechercher donc, cela peut donner quelque-chose comme : javac -classpath "C:\Program Files\Eclipse\plugins\org.eclipse.tomcat_4.1.30.1\servlet.jar" CoucouServlet.java Noter les guillemets et non pas apostrophes.
Administration
Tomcat est géré par l’intermédiaire du fichier conf/server.xml
<Server port="8005" shutdown="SHUTDOWN" debug="0"> <!-- Global JNDI resources --> <GlobalNamingResources> <!-- Test entry for demonstration purposes --> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved"> </Resource> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> </GlobalNamingResources> <!-- Define the Tomcat Stand-Alone Service --> <Service name="Catalina"> <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> <!-- Define the top level container in our container hierarchy --> <Engine name="Catalina" defaultHost="localhost" debug="0"> <!-- Global logger unless overridden at lower levels --> <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/> <!-- Because this Realm is here, an instance will be shared globally --> <!-- This Realm uses the UserDatabase configured in the global JNDI resources under the key "UserDatabase". Any edits that are performed against this UserDatabase are immediately available for use by the Realm. --> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourceName="UserDatabase"/> <!-- Define the default virtual host Note: XML Schema validation will not work with Xerces 2.2. --> <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <!-- Logger shared by all Contexts related to this virtual host. By default (when using FileLogger), log files are created in the "logs" directory relative to $CATALINA_HOME. If you wish, you can specify a different directory with the "directory" attribute. Specify either a relative (to $CATALINA_HOME) or absolute path to the desired directory.--> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/> </Host> </Engine> </Service> </Server>
- Elément racine Server
- Attributs du serveur : port et commande pour l’arrêt. Facultatif : className (doit implémenter org.apache.catalina.Server). Le fichier contient un ou plusieurs éléments Service
- Elément Service
- Un ou plusieurs éléments Connector et un Engine. Attributs : le nom du service (Name) ; facultatif : className (implémentant org.apache.catalina.Service)
- Elément Connector
- Attributs : className implémentant org.apache.catalina.Connector