As bibliotecas nativas do Tomcat são interfaces JNI para aumentar o desempenho das aplicações que rodam no servidor Tomcat através de chamadas nativas. Quando você não tem essas libs no library path do java, o Tomcat exibe a seguinte informação no log: "INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path".
O primeiro passo é instalar as bibliotecas do APR e do OpenSSL. Para isso, execute o seguinte comando no Ubuntu (ou similares Debian):
sudo apt-get install libapr1-dev libssl-dev
Em distribuições que usam RPM você pode utilizar o seguinte comando:
yum install apr-devel openssl-devel
Baixe o código fonte no site: http://tomcat.apache.org/download-native.cgi, descompacte em uma pasta, acesse a subpasta jni/native e execute o seguinte comando:
./configure --with-apr=$HOME_APR \ --with-java-home=$JAVA_HOME \ --with-ssl=$HOME_OPENSSL \ --prefix=$CATALINA_HOME
Onde $HOME_APR é o caminho onde o APR está instalado, $JAVA_HOME é o caminho do Java, $HOME_OPENSSL é onde o OpenSSL está instalado e $CATALINA_HOME é o diretório do Tomcat ou um local específico que você queira colocar as libs. No meu caso ficou assim:
./configure --with-apr=/usr/bin/apr-1-config \ --with-java-home=/usr/lib/jvm/java-6-sun \ --with-ssl=/usr/include/openssl \ --prefix=/opt/tomcat/native
Digite "make" e aguarde a compilação. Para testar (opcional) digite o seguinte comando:
cd.. ant jar ant run-echo
Caso você tenha algum erro dizendo que o ant não está instalado, digite:
sudo apt-get install ant
E repita o comando anterior. Caso contrário, você deverá ter uma saída com a versão da biblioteca utilizada:
[echo] Running Tomcat Native Echo example ... [java] Info ... [java] Native 1.1.22 [java] APR 1.3.8 ...
Digite "make install" e verifique se a lib libtcnative foi criada na pasta lib do diretório especificado ($CATALINA_HOME). Eu prefiro deixar as libs em pastas separadas para utilizar em diversos Tomcat. Então nesse caso é necessário incluir a seguinte linha no início do bin/catalina.sh:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/opt/tomcat/native/lib"
Substitua para o caminho adequado para o seu ambiente. Inicie o Tomcat. Verifique o log e caso tenha o seguinte problema:
"Catalina"; Protocol handler start failed: java.lang.Exception: Socket bind failed: [22] Invalid argument
É porque a versão de Tomcat utilizada está com bug, Obtive esse problema com a versão 6.0.18. Atualize o Tomcat para uma versão mais recente (nesse tutorial utilizei a 6.0.33) e o problema deverá sumir.
Se você obteve no log as seguintes linhas:
... INFO: Loaded APR based Apache Tomcat Native library 1.1.22. ... INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Significa que já está utilizando a otimização de bibliotecas nativas.
Para realizar essa mesma configuração para o JBoss o procedimento é diferente. Para isso consulte o seguinte site: http://www.jboss.org/jbossweb/native