Hi,
I'm trying to deploy a webapp to Tomcat 8.0.39 on CentOS 7 x86_64 that depends
on native shared libraries. I can't install the shared libraries in a
system-wide location because there are multiple applications/webapps being
deployed to this system that use different versions of the same native shared
libraries. We're already running two instances of Tomcat to isolate the
webapps from one another. Here's what's going on:
Tomcat #1 (/opt/tomcatwx) - The webapp described below is able to find all
necessary native shared libraries
bin/setenv.sh source's bin/setenv-wx.sh.
bin/setenv-wx.sh appends
-Djava.library.path=/usr/lib64:/lib64:/lib:/usr/lib:/opt/tomcatwx/lib/gdal to
JAVA_OPTS.
conf/catalina.properties appends
,"${catalina.home}/lib/gdal","${catalina.home}/lib/gdal/*.jar" to common.loader.
lib/gdal contains the following files:
drwxr-xr-x. 2 tomcatwx root 4096 Apr 16 01:06 data
-rw-r--r--. 1 tomcatwx root 134785 Apr 16 00:59 gdal.jar
-rwxr-xr-x. 1 tomcatwx root 86176 Apr 16 00:59 libgdalconstjni.so
-rwxr-xr-x. 1 tomcatwx root 1911144 Apr 16 00:59 libgdaljni.so
-rwxr-xr-x. 1 tomcatwx root 93499064 Apr 16 00:59 libgdal.so
-rwxr-xr-x. 1 tomcatwx root 222448 Apr 16 00:59 libgnmjni.so
-rwxr-xr-x. 1 tomcatwx root 968920 Apr 16 00:59 libogrjni.so
-rwxr-xr-x. 1 tomcatwx root 483536 Apr 16 00:59 libosrjni.so
-rw-r--r--. 1 tomcatwx root 335488 Apr 16 15:28 libproj.so
-rw-r--r--. 1 tomcatwx root 2021 Apr 16 01:06 ./lib/gdal/data/gdalicon.png
-rw-r--r--. 1 tomcatwx root 19884 Apr 16 01:06 ./lib/gdal/data/gdalvrt.xsd
-rw-r--r--. 1 tomcatwx root 234839 Apr 16 01:06 ./lib/gdal/data/gdal_datum.csv
-rwxr-xr-x. 1 tomcatwx root 1911144 Apr 16 00:59 ./lib/gdal/libgdaljni.so
-rwxr-xr-x. 1 tomcatwx root 86176 Apr 16 00:59 ./lib/gdal/libgdalconstjni.so
-rw-r--r--. 1 tomcatwx root 134785 Apr 16 00:59 ./lib/gdal/gdal.jar
-rwxr-xr-x. 1 tomcatwx root 93499064 Apr 16 00:59 ./lib/gdal/libgdal.so
Tomcat #2 (/srv/tomcat) - The webapp described below is unable to find a native
shared library referenced by the JNI shared library.
Native library load failed.
java.lang.UnsatisfiedLinkError: /srv/tomcat/lib/3p/libgdaljni.so:
libgdal.so.20: cannot open shared object file: No such file or directory
bin/setenv.sh source's bin/setenv-3p.sh.
bin/setenv-3-.sh appends -Djava.library.path=/srv/tomcat/lib/3p to JAVA_OPTS.
conf/catalina.properties appends
,"${catalina.home}/lib/3p","${catalina.home}/lib/3p/*.jar" to common.loader.
lib/3p contains the following files:
drwxr-xr-x. 2 tomcat tomcat 4096 Dec 5 20:04 gdal
-rwxr-xr-x. 1 tomcat tomcat 128680 Dec 5 20:06 libgdalconstjni.so
-rwxr-xr-x. 1 tomcat tomcat 1982984 Dec 5 20:06 libgdaljni.so
lrwxrwxrwx. 1 tomcat tomcat 17 Dec 5 20:04 libgdal.so ->
libgdal.so.20.3.101632
lrwxrwxrwx. 1 tomcat tomcat 17 Dec 5 20:04 libgdal.so.20 ->
libgdal.so.20.3.101632
-rwxr-xr-x. 1 tomcat tomcat 93494552 Dec 5 20:04 libgdal.so.20.3.101632
-rwxr-xr-x. 1 tomcat tomcat 294464 Dec 5 20:06 libgnmjni.so
-rw-r--r--. 1 tomcat tomcat 3409872 Jul 15 2016 libjhdf5.so
-rw-r--r--. 1 tomcat tomcat 1268496 Jul 15 2016 libjhdf.so
-rwxr-xr-x. 1 tomcat tomcat 1039816 Dec 5 20:06 libogrjni.so
-rwxr-xr-x. 1 tomcat tomcat 554768 Dec 5 20:06 libosrjni.so
lrwxrwxrwx. 1 tomcat tomcat 17 Dec 5 19:35 libproj.so ->
libproj.so.12.0.03
lrwxrwxrwx. 1 tomcat tomcat 17 Dec 5 19:35 libproj.so.12 ->
libproj.so.12.0.03
-rwxr-xr-x. 1 tomcat tomcat 1871352 Dec 5 19:35 libproj.so.12.0.03
drwxr-xr-x. 2 tomcat tomcat 4096 Dec 5 19:35 proj
webapps/myapp/WEB-INF/lib contains the JNI jar:
-rw-r--r--. 1 tomcat tomcat 134646 May 1 14:03
webapps/myapp/WEB-INF/lib/gdal-2.2.2.jar
which references libgdaljni.so
libgdaljni.so references libgdal.so
which references libgdal.so.20
which references libgdal.so.20.3.101632
What have I failed to do that is preventing Tomcat/Java from finding the fully
resolved libgdal.so that is in the same directory where it found libgdaljni.so?
I tried eliminating the symbolic links by copying libgdal.so.20.3.101632 to
libgdal.so, without success.
I tried copying the gdal-2.2.2.jar to the lib/3p directory, without success.
Thanks in advance for any help.
Scott