How does ServletExec/NSAPI on Solaris determine which JDK or JRE to use?

Answer

This FAQ was written with iPlanet 4.x & NES 3.5.1 in mind.
If you are using iPlanet 4.x or NES 3.5.1 as your webserver, and SE NSAPI as your servlet engine, then consider using the information given in this FAQ when configuring your webserver. If you are using iPlanet 6.x, or a version of Sun's webserver that is branded as "SunONE", or "Java System Webserver", then please consider using FAQ #221 instead when configuring your webserver.

The Netscape/NSAPI version of ServletExec determines which JDK or JRE to use based on the value of the LD_LIBRARY_PATH variable in the server start script. If LD_LIBRARY_PATH points to JDK or JRE 1.1 then the JNI_VERSION variable must be set to "1.1" in the start script, otherwise JNI_VERSION must be set to "1.2". Note that with iWS 6.0, on Solaris, it appears that the LD_LIBRARY_PATH value in the iWS instance's start script gets overridden when that start script calls the .../https-admsrv/bin/start-jvm script. See SE FAQ #221 (link given above) to learn how to work around this iWS 6.0 quirk.

Overview:
With SE NSAPI on Solaris, SE's native code (which is "hooked into" iPlanet) will use the LD_LIBRARY_PATH evironment variable that's setup and exported in the iPlanet start script, together with any JVM options that you have configured via the SE admin pages (which get written to VMSettings.pref), to crank up the JVM.

To learn which version of JVM your SE NSAPI on Solaris is using, access SE's admin UI and view the "VM Settings" page. There it will tell you with which version of JVM SE is running.

If you want to change the JVM that SE NSAPI on Solaris uses, then please see section 4.5.2 of the SE Installation Guide where it says:

If you choose to run a different JDK or JRE version than the one available when
ServletExec/NSAPI was originally installed, you may need to modify the start script and
change the various settings of LD_LIBRARY_PATH as needed.