La procédure suivante a été réalisée et testée sur une Debian Lenny munie d'un tomcat 6.0.16 et d'un jdk 1.6.0_16. Le serveur WEB démarre en utilisant jsvc lancé par un script /etc/init.d/tomcat récupérable sur le web.
Il est tout à fait possible que cette procédure ne fonctionne pas sur une version antérieure ou plus récente des logiciels (J'attends vos retours).

Pré requis :

  • Disposer d'un serveur sous Debian Lenny ou au moins avoir la commande magique aptitude (Debian, Ubuntu …),
  • Avoir les outils nécessaires pour compiler en C/C++ (aptitude install build-essential),
  • Avoir un jdk 6 installé et la variable d'environnement JAVA_HOME configurée. Je déconseille l'utilisation des packages inclus dans les distributions Linux qui s'incrustent au plus profond de la machine hôte. A télécharger sur http://java.sun.com.
  • Avoir un tomcat 6 installé et la variable d'environnement CATALINA_HOME configurée. Même remarque que pour le JDK, à télécharger sur le site http://tomcat.apache.org.


Résumé des commandes (Mode fainéant) :

Pour ceux qui n'aiment pas lire, voici un résumé des commandes à taper qui sont décrites dans la procédure suivante.

cd $CATALINA_HOME/bin
tar -xvzf tomcat-native.tar.gz
cd tomcat-native-1.1.16-src/jni/native
aptitude install libapr1-dev libssl-dev
./configure --with-apr=/usr/bin/apr-1-config \r
	--with-java-home=$JAVA_HOME \r
	--with-ssl=yes \r
	--prefix=$CATALINA_HOME
make && make install

et enfin ajouter dans /etc/init.d/tomcat :

LD_LIBRARY_PATH=$CATALINA_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH


Procédure (Mode verbeux) :

  • Se placer dans le répertoire binaire de tomcat :

cd $CATALINA_HOME/bin

  • Décompresser les sources de tomcat-native :

tar -xvzf tomcat-native.tar.gz

  • Se placer dans le répertoire de compilation :

cd tomcat-native-1.1.16-src/jni/native

  • Installer les librairies nécessaires à la compilation du module :

aptitude install libapr1-dev libssl-dev

  • Configurer puis compiler l'application :

"/usr/bin/apr-1-config" est le chemin par défaut du binaire APR. Ce chemin peut changer suivant les versions des librairies APR

./configure --with-apr=/usr/bin/apr-1-config \r
	--with-java-home=$JAVA_HOME \r
	--with-ssl=yes \r
	--prefix=$CATALINA_HOME
make && make install

les librairies ont été installées dans $CATALINA_HOME/lib.

Un petit texte nous décrit la dernière étape à effectuer :

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
  • J'ai opté pour le premier choix en positionnant les lignes suivantes dans /etc/init.d/tomcat :

LD_LIBRARY_PATH=$CATALINA_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

Ces lignes peuvent être placées dans le catalina.sh ou le startup.sh de votre tomcat si vous ne possédez pas de lanceur dans /etc/init.d (grosse erreur!)

Résultat :

Il suffit maintenant de lancer Tomcat et d'afficher le fichier de logs catalina.out pour voir apparaître les lignes suivantes :

INFO: Loaded APR based Apache Tomcat Native library 1.1.16. 
12 août 2009 12:39:26 org.apache.catalina.core.AprLifecycleListener init 
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].