Que signifie la bibliothèque native Apache Tomcat basée sur APR?

J’utilise Tomcat 7 dans Eclipse sous Windows. Au démarrage de Tomcat, je reçois le message d’information suivant:

La bibliothèque native Apache Tomcat basée sur APR qui permet des performances optimales dans les environnements de production n’a pas été trouvée sur java.library.path

Qu’est-ce que cela signifie et comment puis-je fournir la bibliothèque APR?

Cela signifie exactement ce qu’il dit: “La bibliothèque Apache Tomcat Native basée sur APR qui permet des performances optimales dans les environnements de production n’a pas été trouvée sur java.library.path”

La bibliothèque à laquelle il est fait référence est intégrée à une DLL spécifique au système d’exploitation (tcnative-1.dll) chargée via JNI. Il permet à Tomcat d’utiliser les fonctionnalités du système d’exploitation non fournies dans Java Runtime (telles que sendfile, epoll, OpenSSL, l’état du système, etc.). Tomcat fonctionnera parfaitement sans lui, mais pour certains cas d’utilisation, il sera plus rapide avec les bibliothèques natives.

Si vous le voulez vraiment, téléchargez le tcnative-1.dll (ou libtcnative.so pour Linux) et placez-le dans le dossier bin et ajoutez une propriété système à la configuration de lancement du serveur tomcat dans eclipse.

  -Djava.library.path=c:\dev\tomcat\bin 

Sauf si vous exécutez un serveur de production, ne vous inquiétez pas de ce message. C’est une bibliothèque utilisée pour améliorer les performances (sur les systèmes de production). De la bibliothèque native basée sur Apache Portable Runtime (APR) pour Tomcat :

Tomcat peut utiliser Apache Portable Runtime pour offrir une évolutivité, des performances et une meilleure intégration aux technologies de serveur natif. Apache Portable Runtime est une bibliothèque hautement portable qui est au cœur d’Apache HTTP Server 2.x. APR a de nombreuses utilisations, y compris l’access aux fonctionnalités IO avancées (sendfile, epoll et OpenSSL), les fonctionnalités du système d’exploitation (génération de nombres aléatoires, état du système, etc.) et la gestion des processus natifs

Sur RHEL Linux vient de sortir:

yum installe tomcat-native.x86_64

/ Note: selon votre architecture, un package 64 bits ou 32 bits peut avoir une extension différente /

C’est tout. Après cela, vous trouverez dans le fichier journal le message d’information suivant:

INFO: Capacités APR: IPv6 [true], sendfile [true], acceptent les filtres [false], random [true].

Toutes les opérations seront sensiblement plus rapides qu’avant.

Installation de la bibliothèque native sur le serveur Ubuntu avec:

 sudo apt-get install libtcnative-1 

Si cela ne fonctionne pas, tomcat-native doit être installé

  1. Installez Oracle java7:

    • sudo add-apt-repository ppa: webupd8team / java
    • sudo apt-get update
    • sudo apt-get installe oracle-java7-installer
    • sudo apt-get installe oracle-java7-set-default
  2. Installez tomcat apr:

  3. Installez tomcat tomcat-native:

Je viens de passer par là et l’ai configuré avec les éléments suivants:

Ubuntu 16.04

Tomcat 8.5.9

Apache2.4.25

APR 1.5.2

Tomcat-native 1.2.10

Java 8

Ce sont les étapes que j’ai utilisées sur la base des anciens messages ici:

Installer le paquet

sudo apt-get update

sudo apt-get install libtcnative-1

Vérifiez que ces packages sont installés

sudo apt-get install make

sudo apt-get install gcc

sudo apt-get install openssl

Installer le paquet

sudo apt-get install libssl-dev

Installer et comstackr Apache APR

cd / opt / tomcat / bin

sudo wget http://apache.mirror.anlx.net//apr/apr-1.5.2.tar.gz

sudo tar -xzvf apr-1.5.2.tar.gz

cd apr-1.5.2

sudo ./configure

sudo faire

sudo make install

vérifier l’installation

cd / usr / local / apr / lib /

ls

vous devriez voir le fichier compilé comme

libapr-1.la

Téléchargez et installez le package source Tomcat Native

cd / opt / tomcat / bin

sudo wget https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.10/source/tomcat-native-1.2.10-src.tar.gz

sudo tar -xzvf tomcat-native-1.2.10-src.tar.gz

cd tomcat-native-1.2.10-src / native

vérifier JAVA_HOME

sudo pico ~ / .bashrc

export JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64

source ~ / .bashrc

sudo ./configure –with-apr = / usr / local / apr –with-java-home = $ JAVA_HOME

sudo faire

sudo make install

Editez le fichier /opt/tomcat/bin/setenv.sh avec la ligne suivante:

sudo pico /opt/tomcat/bin/setenv.sh

export LD_LIBRARY_PATH = ‘$ LD_LIBRARY_PATH: / usr / local / apr / lib’

redémarrer tomcat

redémarrage du service sudo

sur Debian 8 je le libapr1-dev avec l’installation de libapr1-dev :

 apt-get install libtcnative-1 libapr1-dev 

Eu ce problème aussi. Si vous avez les bibliothèques, mais que vous avez toujours cette erreur, cela peut être une erreur de configuration. Votre server.xml peut être la ligne suivante manquante:

   

(Alternativement, il peut être commenté). Ce , comme les autres écouteurs, est un enfant du niveau .

Sans la ligne , il n’y a aucune tentative pour charger la bibliothèque APR, donc les LD_LIBRARY_PATH et -Djava.library.path= sont ignorés.

J’ai eu le même problème quand Tom ne pouvait pas trouver la classe. Essayez d’afficher d’autres fichiers journaux. Parfois, aucune erreur détectée de classe déf n’apparaît dans différents fichiers journaux:

  • tomcat8-stdout
  • tomcat8-stderr
  • localhost

Si vous n’avez pas de bibliothèque native Tomcat, installez-la avec:

sudo apt-get install libtcnative-1

et si elle existe toujours, une ancienne version la met à jour avec:

sudo apt-get upgrade libtcnative-1