Installation de Tomcat sur MacOSX

Une version plus récente de la procédure existe pour l'installation de Tomcat 7.0.

Téléchargement et copie des fichiers

Comme Java vient installé avec MacOSX, installer Tomcat reste assez simple (quoique un peu plus compliqué que sous Windows). Il faut télécharger le paquetage de Tomcat sur le site officiel. Au moment d'écrire cet aide, il s'agissait de la version 6.0.18 et le fichier se nomme apache-tomcat-6.0.18.tar.gz. Bien sûr, cela peut changer.

Une fois téléchargé, il faut décompresser les fichier à un bon endroit, tout comme dans /usr/local. Pour copier les fichier à cet endroit, il faut avoir les privilèges administrateurs avec la commande sudo.

mbp:~ stephane$ sudo sh
Password:
sh-3.2# mv apache-tomcat-6.0.18.tar.gz /usr/local/
sh-3.2# cd /usr/local/
sh-3.2# gnutar -xzvf apache-tomcat-6.0.18.tar.gz

Optionellement, en étant dans /usr/local, on peut créer un lien symbolique vers Tomcat, de cette façon, on pourra faire référence à tomcat au lieu de apache-tomcat-6.0.18.

sudo ln -s apache-tomcat-6.0.18 tomcat

Tomcat est maintenant installé dans le répertoire /usr/local/apache-tomcat-6.0.18/. Il reste tout de même quelques changements à faire. Il est préférable de changer le propriétaires des fichiers. Changer owner et group par les informations appropriés.

sh-3.2# chown -R owner:group /usr/local/apache-tomcat-6.0.18
Changer les parties owner et group par des valeurs appropriées.

Démarrer et arrêter Tomcat

Dans un répertoire quelconque (ex : ~/bin), créer deux fichiers. Un pour démarrer, nommé start_tomcat et l'autre stop_tomcat. Les deux fichiers sont quasi identiques, c'est seulement la quatrième ligne qui change.

#!/bin/sh
export CATALINA_HOME=/usr/local/apache-tomcat-6.0.18
export JAVA_HOME=/usr
$CATALINA_HOME/bin/startup.sh
#!/bin/sh
export CATALINA_HOME=/usr/local/apache-tomcat-6.0.18
export JAVA_HOME=/usr
$CATALINA_HOME/bin/shutdown.sh

Changer le mode des fichiers pour les rendre exécutables :

chmod ug+x start_tomcat stop_tomcat 

S'il faut prévoir un utilisateur qui agira en tant que gestionnaire, il faut l'ajouter dans le fichier /usr/local/apache-tomcat-6.0.18/conf/tomcat-users.xml. Dans cet exemple, un utilisateur stef avec le mot de passe stef et le rôle manager a été ajouté.

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <user username="stef" password="stef" roles="manager"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

Et finalement, démarrer le service de Tomcat. Il faudra exécuter stop_tomcat pour arrêter.

~/bin/start_tomcat

Vérification

Pour vérifier que tout est fonctionnel, il faut aller à la page http://localhost:8080/. Si la page par défaut de Tomcat apparaît, l'installation a réussi.

Configuration

Les fichiers de configuration de Tomcat se trouvent dans le répertoire /usr/local/apache-tomcat-5.5.27/conf/ et le plus intéressant est server.xml où l'on peut changer le port HTTP du serveur. Par défaut il est à 8080.

Autre fichier intéressant, tomcat-users.xml qui donne les informations utilisateurs. Il est possible d'en ajouter d'autres en insérant une ligne supplémentaire.

  <user username="stef" password="L9_s0x9-iDè" roles="manager"/>

Déploiement d'une servlet

Le sujet est discuté dans la page sur les servlets, mais ici la procédure est succincte et directe.

Procédure

  1. Créer une arborescence dans /usr/local/tomcat/webapps, exemple test.
  2. Développer une classe qui implémente javax.servlet.* et la compiler.
  3. Créer le fichier web.xml dans le répertoire WEB-INF de l'application.
  4. Vérifier si le tout fonctionne.

Arborescence

Voici un exemple d'arborescence à créer dans le répertoire /usr/local/tomcat/webapps :

Développer la classe

Créer un fichier Java dans WEB-INF/classes qui implémente javax.servlet.*. Dans ce cas, TestServlet.java.

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
public class TestServlet 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("<head>"); 
        out.println("<title>Bonjour Monde !</title>"); 
        out.println("</head>"); 
        out.println("<body>"); 
        out.println("<h1>Bonjour Monde avec une simple servlet !</h1>"); 
        out.println("</body>"); 
        out.println("</html>"); 
    } 
} 

Compiler un servlet

Compiler le fichier Java. Ne pas oublier de modifier la variable d'environnement CLASSPATH au besoin.

javac TestServlet.java

En compilant une classe qui importe javax.servlet.*, il se peut que javac ne trouve pas la librairie nécessaire. Cette librairie, servlet-api.jar vient avec Tomcat, il suffit de l'ajouter dans le $CLASSPATH :

export CLASSPATH="$CLASSPATH:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/usr/local/apache-tomcat-6.0.18/common/lib/servlet-api.jar"

ou

export CLASSPATH="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/usr/local/tomcat/common/lib/servlet-api.jar"

ou, avec l'API JSP :

export CLASSPATH="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/usr/local/tomcat/common/lib/servlet-api.jar:/usr/local/tomcat/common/lib/jsp-api.jar"

Fichier web.xml

Créer un fichier web.xml dans WEB-INF pour l'application.

<?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>
    <display-name>Test Servlet</display-name>
    <description>Test d'une application fonctionnant avec servlet.</description>
    <context-param>
      <param-name>webmaster</param-name>
      <param-value>stephane@domain.com</param-value>
      <description>The EMAIL address of the administrator to whom questions and comments about this application should be addressed.</description>
    </context-param>
    <servlet>
      <servlet-name>TestServlet</servlet-name>
      <servlet-class>TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>TestServlet</servlet-name>
      <url-pattern>/Test_servlet</url-pattern>
    </servlet-mapping>
    <session-config>
      <session-timeout>30</session-timeout>    <!-- 30 minutes -->
    </session-config>
</web-app>

Vérifier l'application

  1. Démarrer Tomcat s'il y a lieu.
  2. Ouvrir un navigateur web et aller à l'adresse de l'application (http://localhost:8080/test/Test_servlet).

Le contexte dans server.xml

Selon la documentation, depuis la version 5 de Tomcat, il n'est pas conseillé d'inclure un contexte dans le fichier server.xml. Pour ce faire, il faut inclure une section <Context> dans la section <Host>.

<Context path="/mine" docBase="mine" debug="0" reloadable="true">
  <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_mine_log." suffix=".txt"
    timestamp="true"/>
</Context>

Ressources

Source : http://developer.apple.com/internet/java/tomcat1.html