Po dodaniu serwera aplikacji Apache Tomcat w Eclipse, podczas startu widzimy w logach:
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Jak dodać bibliotekę Apache Tomcat Native do java.library.path
? Najpierw trzeba ją skompilować.
No potrzeby tego postu, zakładam, że tomcat znajduje w katalogu /opt/java/servers/tomcat7
. Jeśli zmienna CATALINA_HOME nie jest ustawiona, warto ją dodać do np. ~/.profile
:
# Export tomcat home
export CATALINA_HOME=/opt/java/servers/tomcat7
Instalacja zależności
Zanim zaczniemy kompilować, konieczne jest przygotowanie systemu. Na podstawowy zestaw narzędzi do kompilacji kodu w języku c
składa się gcc
i make
. Indywidualne pakiety można zainstalować za pomocą:
Można także skorzystać z dostępnych wzorców i zainstalować pattern devel_C_C++
za pomocą:
Do kompilacji samej zaś biblioteki potrzebujemy pakiety libopenssl-devel
oraz libapr1-devel
. Jeśli jeszcze ich nie mamy w systemie, to instalujemy:
Kompilacja biblioteki
- Przechodzimy do katalogu
bin
w katalogu tomcata i rozpakowujemy źródła.
- Przechodzimy do katalogu
tomcat-native-1.1.29-src/jni/native
Uwaga! Wersja biblioteki może się różnić, zależnie od użytej wersji tomcata. W wersji tomcat-7.0.52 biblioteka natywna jest w wersji 1.1.29.
- Konfiguracja i kompilacja
Aby przygotować źródła do kompilacji, wywołujemy skrypt
configure
. W liście parametrów dostarczamy ścieżkę do plików nagłówkowychapr
oraz ustawiamyprefix
- ścieżka gdzie biblioteka zostanie zainstalowana po wywołaniumake install
z zachowaniem struktury katalogów. Po skonfigurowaniu, wystarczy skompilować i zainstalować bibliotekę.
Jako potwierdzenie, że biblioteka została zainstalowana, wyświetlona zostanie informacja:
Libraries have been installed in:
/opt/java/servers/tomcat7/native/lib
Na powyższą ścieżkę składa się użyty prefix
podczas konfiguracji i katalog lib
.
java.library.path
Podczas próby uruchomienia tomcata z poziomy eclipse, nadal dostajemy informację, że biblioteka natywna nie jest dostępna. Pomimo, że przed chwilą zostało skompilowana i zainstalowana. Trzeba jeszcze dać ją do ściżki, z której będzie dostępna dla Javy. Aby nie modyfikować ustawień systemowych, można to osiągnąć w eclipse.
Otwieramy konfigurację uruchamiania. PPM na naszym projekcie → Run configurations wybieramy konfigurację dla Apache Tomcat a z niej kartę Environment
. Dodajemy nowy parametr o nazwie LD_LIBRARY_PATH
i wartości takiej jak ścieżka, gdzie nasza biblioteka została zainstalowana, czyli /opt/java/servers/tomcat7/native/lib
.
Po zastosowaniu zmian i uruchomieniu serwera, w dzienniku uruchamiania możemy zobaczyć:
INFO: Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.4.8.