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].
Commentaires
Merci pour ces infos. Sur une Ubuntu server 8.04, j'ai rencontré un problème avec la librairie libapr1-dev. Le démarrage du serveur plante (ou est très très lent).
J'ai installé la librairie APR 1.3.8 chargé directement depuis apr.apache.org et tout est rentré dans l'ordre.
Super ! Ca faisait bien longtemps que je devais chercher qqch pour regler ce point : du coup c'est fait, merci !!!
Est ce que tu as vu un réel changement au niveau performance ?
Pour l'utilisation que j'en fais en développement, pour l'instant, je n'ai pas vu de réelle différence. En production avec un grand nombre d'utilisateurs, le changement doit se faire sentir , mais je n'ai pas fait de benchmark. Il est dit que ça optimise grandement tout ce qui touche au cryptage (https par exemple).
En complément de cet excellent post, voici juste ce qu'il faut pour Windows :
1. Télécharger la DLL nécessaire a l'adresse suivante
http://tomcat.heanet.ie/native/1.1.... (ne prendre que la DLL)
2. Déployer la DLL dans C:\Windows\System32
:-)
Sous Linux oui c'est parfait
et sous Windows t'a une idée de comment est ce que ça marche?