Siempre que inicio el servidor tomcat me aparece un mensaje como este:
INFO: La biblioteca nativa de Apache Tomcat basada en ARP que permite un rendimiento óptimo en entornos de desarrollo no ha sido hallada en java.library.path:...
Y nunca le dí importancia hasta hoy, por que tengo que utilizarlo en un proyecto bastante amplio que necesita cuidar el performance al máximo, en fin le he dedicado un rato para investigar a que se refiere esta libreria y esto fue lo que encontre:
The Apache Portable Runtime is a highly portable library that is at the heart of Apache HTTP Server 2.x. APR has many uses, including access to advanced IO functionality (such as sendfile, epoll and OpenSSL), OS level functionality (random number generation, system status, etc), and native process handling (shared memory, NT pipes and Unix sockets).
These features allows making Tomcat a general purpose webserver, will enable much better integration with other native web technologies, and overall make Java much more viable as a full fledged webserver platform rather than simply a backend focused technology.
Al parecer es una libreria que mejora la integración del servidor con el sistema, y el resultado es que tomcat deja de ser un contenedor de servlets y hace que java sea mucho mas viable para esta técnologia y no solo un lenguaje de back end. Una de las ventajas es que mejora la velocidad del tomcat busque algunos test y afirman que mejora en rendimiento =)… (¬¬ de haber sabido que algo así existía… tengo que fijarme más en los mensajes del log).
Instalación
LinuxAhorita tengo kubuntu 11.10 así que vamos a realizar la instalación:
Requisitos:
- APR 1.2+ development headers (libapr1-dev package)
- OpenSSL 0.9.7+ development headers (libssl-dev package)
- JNI headers from Java compatible JDK 1.4+
- GNU development environment (gcc, make)
Instalar las dependencias (ya tengo instalado el JDK 1.6).
sudo apt-get install gcc fakeroot libssl-dev libapr1 libapr1-dev build-essential
Ahora bajamos el código fuente “tomcat-native-1.1.22-src.tar.gz” desde aquí (yo tome la versión actual que es 1.1.22), lo descomprimes y después hay que compilar e instalar:
wget http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.22/source/tomcat-native-1.1.22-src.tar.gz
tar -xvf tomcat-native-1.1.22-src.tar.gz
cd tomcat-native-1.1.22-src/jni/native/
./configure --with-apr="/usr/bin" --with-java-home="/opt/jdk1.6.0_23_x64/" && make && sudo make install
Nota: Cambia la ruta hacia tu JDK
Al final te debe de salir esto:
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/apr/lib 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 operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Ahora incluimos la librería en el sistema (en algunas maquinas se genera de forma automática, si te marca que ya existe te saltas este paso)
sudo ln -s /usr/local/apr/lib/libtcnative-1.so libtcnative-1.so
Falta agregarlo al classpath del tomcat, editas el archivo setenv.sh y agregas la siguiente línea:
export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
Ahora al iniciar el servidor aparecerá algo así:
INFO main org.apache.catalina.core.AprLifecycleListener - Loaded APR based Apache Tomcat Native library 1.1.22.
INFO main org.apache.catalina.core.AprLifecycleListener - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].