Rony,

On 4/20/21 06:46, Rony G. Flatscher (Apache) wrote:
CATALINA_OPTS is about passing on Java options and System property definitions, 
if not mistaken.

Correct.

When bringing non-Java binaries into the picture then they work in the process 
environment where
e.g. PATH defines which directories are looked up for finding executables 
(which might be important
for some natives) and on Windows DLLs, and in Linux and MacOS shared libraries 
need to be found by
the non-Java native code. Hence the desire to allow setting up the process 
environment before
starting up Tomcat in a simple, but effective way.

You may want to do a Google search for "java.library.path".

However, with CATALINA_OPTS you brought the startup/stop|shutdown/catalina 
scripts into the picture,
which might be a possible solution (though being very wary altering/tampering 
such fundamental scripts).

I didn't suggest that you modify those scripts. I only suggested that you use an environment variable that those scripts are aware of.

Typically, admins will create a bin/setenv.sh script which sets all environment variables necessary for local operation. You could even change the PATH variable -- if you really want to do that -- there.

-chris

On 19.04.2021 17:37, Christopher Schultz wrote:

Rony,

On 4/19/21 08:54, Rony G. Flatscher (Apache) wrote:
Java based web servers are - of course - focused on the Java programming 
language and the Java
runtime environment.

Nevertheless, there are situations where non-Java binaries may become resources 
that may prove
helpful in a Java environment.

As Java allows interfacing with non-Java binaries via JNI (Java native 
interface) it may make sense
to support native binaries in Tomcat as well.

Use case in question would be to make non-Java programming languages with JNI 
interfaces available
without having to install such programming languages globally on the server.  
There may be other use
cases as well (e.g. non-public security libraries).

In order to make this as simple as possible and yet allow for the Tomcat setup 
to be as secure as
setting up shared Java libraries, how about allowing for the following:

    * allow optional "$CATALINA_HOME/natives/bin" and 
"$CATALINA_HOME/natives/lib" directories into
      which the (Tomcat shared) binaries can be placed,

Is there anything wrong with using CATALINA_OPTS to set java.library.path to 
some arbitrary value?
I always have mine set to CATALINA_BASE/lib

    * if "$CATALINA_HOME/natives/bin" exists have the PATH environment variable 
prepended with
      "$CATALINA_HOME/natives/bin" before Tomcat gets started up,

Note that java.library.path (a system property) would be better than changing 
the PATH environment
variable.

    * if "$CATALINA_HOME/natives/lib" exists do whatever is needed for Linux 
and MacOS systems for
the
      process to become able to recognize the shared native libraries there,

Nothing further is needed after java.library.path is set.

    * if there are jar files (possibly with JNI interfaces) in 
"$CATALINA_HOME/natives/lib" then add
      them to Tomcat (like the jar files in "$CATALINA_HOME/lib").

If you use CATALINA_BASE/lib, then this is already done for you.

-chris



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to